import os from pathlib import Path class Insel: def __init__(self, path, name, new_content="", mode=1, keep_files=False): self._path = path self._name = name self._full_path = None self._content = None self._results = None self._keep_files = keep_files self.add_content(new_content, mode) self.save() def save(self): with open(self.full_path, 'w') as insel_file: insel_file.write(self.content) return @property def full_path(self): if self._full_path is None: self._full_path = (Path(self._path) / 'tmp' / self._name).resolve() return self._full_path @property def content(self): if self._content is None: if os.path.exists(self.full_path): with open(self.full_path, 'r') as insel_file: self._content = insel_file.read() else: self._content = '' return self._content # todo: create method def add_block(self): raise Exception('Not implemented') def add_content(self, new_content, mode): # mode = 1: keep old content if mode == 1: self._content = self.content + '\r\n' + new_content # mode = 2: over-write elif mode == 2: self._content = new_content else: raise Exception('Add content mode not supported') return def run(self): output = os.system('insel ' + str(self.full_path)) # todo: catch errors from INSEL if not self._keep_files: os.remove(self.full_path) @property def results(self): raise Exception('Not implemented')