import tempfile import os from .enums import TeXType from .formatting_config import FormattingConfig from .pytex_formatter import PyTeXFormatter from pathlib import Path import subprocess import shutil from typing import List, Tuple class DocStripFormatter(PyTeXFormatter): @property def output_files(self) -> List[str]: if self.config.tex_out_type == TeXType.TeXClass: return [self.raw_name + '.cls'] elif self.config.tex_out_type == TeXType.TeXPackage: return [self.raw_name + '.sty'] else: raise NotImplementedError def format(self, build_dir: Path, overwrite: bool = False) -> List[Tuple[str, FormattingConfig]]: tmp_dir: Path = Path(tempfile.mkdtemp()) shutil.copy( self.input_file, tmp_dir ) if self.input_file.with_suffix('.ins').exists(): shutil.copy( self.input_file.with_suffix('.ins'), tmp_dir ) result = subprocess.run( ["tex", self.input_file.with_suffix('.ins').name], cwd=tmp_dir, stderr=subprocess.DEVNULL, # TODO stdout=subprocess.DEVNULL # TODO ) if not result.returncode == 0: raise NotImplementedError('no correct returncode') else: result = subprocess.run( ['pdflatex', self.input_file.name], cwd=tmp_dir, stderr=subprocess.STDOUT ) if not result.returncode == 0: raise NotImplementedError for file in self.output_files: outfile = tmp_dir / file if not outfile.exists(): raise NotImplementedError(f'output file {outfile} does not exist') shutil.copy(outfile, build_dir) shutil.rmtree(tmp_dir) return [] # No future config @property def dependencies(self) -> List[str]: return [] # TODO