def invoke_template(self, effect: token.TemplateEffect) -> None: source_path = self.source_path(effect) target_path = self.target_path(effect) source_text = SUDO.file_load(source_path) template = jinja2.Template(source_text) target_text = template.render(effect.context) SUDO.files_sync_base(source_path, target_path) # copy attr SUDO.file_save(target_path, target_text) # change content SUDO.files_sync_time(source_path, target_path) # copy time
def synchronize_header(source: str, target: str) -> None: "transfer header metadata between local paths" header_dict = dict() # never empty try: header_dict = SUDO.xattr_load(source) except: pass if not header_dict: header_dict = produce_header(source) try: SUDO.xattr_save(target, header_dict) except: SUDO.files_sync_time(source, target)