From 3eb208b2c1637f4842a1daa26d80e633c9beedd0 Mon Sep 17 00:00:00 2001 From: Emmanuel Garette Date: Sun, 22 Dec 2019 14:46:16 +0100 Subject: [PATCH] can add rougail_variable to template --- data/creole.dtd | 29 +++++----- src/rougail/template.py | 44 ++++++++++----- .../00-base.xml | 24 +++++++++ .../makedict/base.json | 1 + .../result/00-base.xml | 54 +++++++++++++++++++ .../00-base.xml | 54 +++++++++++++++++++ .../dest/test/etc/mailname | 1 + .../dest/test/etc/mailname2 | 1 + .../result/test/etc/mailname | 1 + .../result/test/etc/mailname2 | 1 + .../tmp/mailname | 1 + .../tmpl/mailname | 1 + 12 files changed, 185 insertions(+), 27 deletions(-) create mode 100644 tests/flattener_dicos/70container_files_symlink_multi_variable/00-base.xml create mode 100644 tests/flattener_dicos/70container_files_symlink_multi_variable/makedict/base.json create mode 100644 tests/flattener_dicos/70container_files_symlink_multi_variable/result/00-base.xml create mode 100644 tests/templates/70container_files_symlink_multi_variable/00-base.xml create mode 100644 tests/templates/70container_files_symlink_multi_variable/dest/test/etc/mailname create mode 100644 tests/templates/70container_files_symlink_multi_variable/dest/test/etc/mailname2 create mode 100644 tests/templates/70container_files_symlink_multi_variable/result/test/etc/mailname create mode 100644 tests/templates/70container_files_symlink_multi_variable/result/test/etc/mailname2 create mode 100644 tests/templates/70container_files_symlink_multi_variable/tmp/mailname create mode 100644 tests/templates/70container_files_symlink_multi_variable/tmpl/mailname diff --git a/data/creole.dtd b/data/creole.dtd index 1f403384..82bbfdb3 100644 --- a/data/creole.dtd +++ b/data/creole.dtd @@ -87,55 +87,55 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -149,6 +149,8 @@ + + @@ -229,4 +231,3 @@ - diff --git a/src/rougail/template.py b/src/rougail/template.py index de44625c..de2eb916 100644 --- a/src/rougail/template.py +++ b/src/rougail/template.py @@ -8,7 +8,7 @@ import imp import sys from shutil import copy import logging -from typing import Dict +from typing import Dict, Any from subprocess import call from os import listdir, unlink, makedirs @@ -116,16 +116,21 @@ class CheetahTemplate(ChtTemplate): eosfunc: Dict, config: Config, current_container: str, - destfilename): + destfilename, + variable): """Initialize Creole CheetahTemplate """ - ChtTemplate.__init__(self, file=filename, - searchList=[context, eosfunc, {'is_defined' : IsDefined(context), - # 'creole_client' : CreoleClient(config), - # 'current_container':CreoleGet(current_container), - 'normalize_family': normalize_family, - 'rougail_filename': destfilename - }]) + extra_context = {'is_defined' : IsDefined(context), + # 'creole_client' : CreoleClient(config), + # 'current_container':CreoleGet(current_container), + 'normalize_family': normalize_family, + 'rougail_filename': destfilename + } + if variable: + extra_context['rougail_variable'] = variable + ChtTemplate.__init__(self, + file=filename, + searchList=[context, eosfunc, extra_context]) class CreoleLeader: @@ -324,7 +329,8 @@ class CreoleTemplateEngine: def process(self, destfilename: str, filevar: Dict, - container: str): + container: str, + variable: Any): """Process a cheetah template """ # full path of the destination file @@ -336,7 +342,8 @@ class CreoleTemplateEngine: self.eosfunc, self.config.config.copy(), container, - destfilename) + destfilename, + variable) data = str(cheetah_template) except CheetahNotFound as err: varname = err.args[0][13:-1] @@ -393,15 +400,26 @@ class CreoleTemplateEngine: container_dir = join(self.dest_dir, container) filenames = filevar['name'] + if 'variable' in filevar: + variable = filevar['variable'] + else: + variable = None if not isinstance(filenames, list): filenames = [filenames] - for filename in filenames: + if variable: + variable = [variable] + for idx, filename in enumerate(filenames): destfilename = join(container_dir, filename[1:]) makedirs(dirname(destfilename), exist_ok=True) + if variable: + var = variable[idx] + else: + var = None self.process(destfilename, filevar, - container) + container, + var) self.change_properties(destfilename, filevar) diff --git a/tests/flattener_dicos/70container_files_symlink_multi_variable/00-base.xml b/tests/flattener_dicos/70container_files_symlink_multi_variable/00-base.xml new file mode 100644 index 00000000..e926a744 --- /dev/null +++ b/tests/flattener_dicos/70container_files_symlink_multi_variable/00-base.xml @@ -0,0 +1,24 @@ + + + + + + + + + + + + /etc/mailname + /etc/mailname2 + + + mailname + mailname2 + + + + + diff --git a/tests/flattener_dicos/70container_files_symlink_multi_variable/makedict/base.json b/tests/flattener_dicos/70container_files_symlink_multi_variable/makedict/base.json new file mode 100644 index 00000000..84ba486c --- /dev/null +++ b/tests/flattener_dicos/70container_files_symlink_multi_variable/makedict/base.json @@ -0,0 +1 @@ +{"creole.general.file_name": ["/etc/mailname", "/etc/mailname2"], "creole.general.var": ["mailname", "mailname2"], "containers.container0.files.file0.mkdir": false, "containers.container0.files.file0.name": ["/etc/mailname", "/etc/mailname2"], "containers.container0.files.file0.rm": false, "containers.container0.files.file0.source": "mailname", "containers.container0.files.file0.variable": ["mailname", "mailname2"], "containers.container0.files.file0.activate": true} \ No newline at end of file diff --git a/tests/flattener_dicos/70container_files_symlink_multi_variable/result/00-base.xml b/tests/flattener_dicos/70container_files_symlink_multi_variable/result/00-base.xml new file mode 100644 index 00000000..4bf5ad09 --- /dev/null +++ b/tests/flattener_dicos/70container_files_symlink_multi_variable/result/00-base.xml @@ -0,0 +1,54 @@ + + + + + + + + False + + + + False + + + mailname + + + + True + + + + basic + + + + + normal + + oui + non + force_default_on_freeze + frozen + hidden + mandatory + normal + oui + + + mandatory + normal + /etc/mailname + /etc/mailname2 + + + mandatory + normal + mailname + mailname2 + + + + + diff --git a/tests/templates/70container_files_symlink_multi_variable/00-base.xml b/tests/templates/70container_files_symlink_multi_variable/00-base.xml new file mode 100644 index 00000000..4bf5ad09 --- /dev/null +++ b/tests/templates/70container_files_symlink_multi_variable/00-base.xml @@ -0,0 +1,54 @@ + + + + + + + + False + + + + False + + + mailname + + + + True + + + + basic + + + + + normal + + oui + non + force_default_on_freeze + frozen + hidden + mandatory + normal + oui + + + mandatory + normal + /etc/mailname + /etc/mailname2 + + + mandatory + normal + mailname + mailname2 + + + + + diff --git a/tests/templates/70container_files_symlink_multi_variable/dest/test/etc/mailname b/tests/templates/70container_files_symlink_multi_variable/dest/test/etc/mailname new file mode 100644 index 00000000..0288f489 --- /dev/null +++ b/tests/templates/70container_files_symlink_multi_variable/dest/test/etc/mailname @@ -0,0 +1 @@ +mailname diff --git a/tests/templates/70container_files_symlink_multi_variable/dest/test/etc/mailname2 b/tests/templates/70container_files_symlink_multi_variable/dest/test/etc/mailname2 new file mode 100644 index 00000000..80d43ca5 --- /dev/null +++ b/tests/templates/70container_files_symlink_multi_variable/dest/test/etc/mailname2 @@ -0,0 +1 @@ +mailname2 diff --git a/tests/templates/70container_files_symlink_multi_variable/result/test/etc/mailname b/tests/templates/70container_files_symlink_multi_variable/result/test/etc/mailname new file mode 100644 index 00000000..0288f489 --- /dev/null +++ b/tests/templates/70container_files_symlink_multi_variable/result/test/etc/mailname @@ -0,0 +1 @@ +mailname diff --git a/tests/templates/70container_files_symlink_multi_variable/result/test/etc/mailname2 b/tests/templates/70container_files_symlink_multi_variable/result/test/etc/mailname2 new file mode 100644 index 00000000..80d43ca5 --- /dev/null +++ b/tests/templates/70container_files_symlink_multi_variable/result/test/etc/mailname2 @@ -0,0 +1 @@ +mailname2 diff --git a/tests/templates/70container_files_symlink_multi_variable/tmp/mailname b/tests/templates/70container_files_symlink_multi_variable/tmp/mailname new file mode 100644 index 00000000..5ecb01bb --- /dev/null +++ b/tests/templates/70container_files_symlink_multi_variable/tmp/mailname @@ -0,0 +1 @@ +%%rougail_variable diff --git a/tests/templates/70container_files_symlink_multi_variable/tmpl/mailname b/tests/templates/70container_files_symlink_multi_variable/tmpl/mailname new file mode 100644 index 00000000..5ecb01bb --- /dev/null +++ b/tests/templates/70container_files_symlink_multi_variable/tmpl/mailname @@ -0,0 +1 @@ +%%rougail_variable