diff --git a/src/rougail/template.py b/src/rougail/template.py index e9e9a0ed..ce214061 100644 --- a/src/rougail/template.py +++ b/src/rougail/template.py @@ -262,13 +262,17 @@ class CreoleTemplateEngine: distrib_dir: str, tmp_dir: str, dest_dir: str, + override_dest_dir: str, tmpfile_name: str, + factory_prefix: str, ) -> None: self.config = config self.dest_dir = dest_dir + self.override_dest_dir = override_dest_dir self.tmp_dir = tmp_dir self.distrib_dir = distrib_dir self.tmpfile_name = tmpfile_name + self.factory_prefix = factory_prefix eos = {} if eosfunc_file is not None: eosfunc = imp.load_source('eosfunc', eosfunc_file) @@ -382,7 +386,7 @@ class CreoleTemplateEngine: else: variable = None if override: - filenames = [f'/system/{service_name}.service.d/rougail.conf'] + filenames = [f'/systemd/system/{service_name}.service.d/rougail.conf'] else: filenames = filevar['name'] if not isinstance(filenames, list): @@ -390,8 +394,10 @@ class CreoleTemplateEngine: if variable: variable = [variable] for idx, filename in enumerate(filenames): - destfilename = join(self.dest_dir, - filename[1:]) + if override: + destfilename = join(self.override_dest_dir, filename[1:]) + else: + destfilename = join(self.dest_dir, filename[1:]) makedirs(dirname(destfilename), exist_ok=True) if variable: var = variable[idx] @@ -406,7 +412,7 @@ class CreoleTemplateEngine: else: copy(source, destfilename) if not override and self.tmpfile_name: - systemd_rights.append(f'C {filename} {filevar["mode"]} {filevar["owner"]} {filevar["group"]} - -') + systemd_rights.append(f'C {filename} {filevar["mode"]} {filevar["owner"]} {filevar["group"]} - {self.factory_prefix}{filename}') systemd_rights.append(f'z {filename} - - - - -') async def instance_files(self) -> None: @@ -455,11 +461,22 @@ async def generate(config: Config, distrib_dir: str, tmp_dir: str, dest_dir: str, - tmpfile_name: str=None) -> None: + override_dest_dir: str, + tmpfile_name: str=None, + factory_prefix: str=None, + ) -> None: + if not tmpfile_name and factory_prefix: + raise Exception(_(f'only specify factory_prefix if tmpfile_name is set')) + if tmpfile_name and not factory_prefix: + raise Exception(_(f'if tmpfile_name is specify, set factory_prefix too')) + engine = CreoleTemplateEngine(config, eosfunc_file, distrib_dir, tmp_dir, dest_dir, - tmpfile_name) + override_dest_dir, + tmpfile_name, + factory_prefix, + ) await engine.instance_files()