diff --git a/src/adcm_client/packer/types.py b/src/adcm_client/packer/types.py index 3ca13a2..38fe2f5 100644 --- a/src/adcm_client/packer/types.py +++ b/src/adcm_client/packer/types.py @@ -16,13 +16,16 @@ import string from itertools import chain -import jinja2 import yaml from docker import from_env from docker.client import DockerClient from docker.errors import ImageNotFound from docker.models.containers import Container # pylint: disable=unused-import from docker.models.images import Image +from jinja2.environment import Environment +from jinja2.loaders import FileSystemLoader +from jinja2.runtime import StrictUndefined +from markupsafe import Markup class NoModulesToInstall(Exception): @@ -195,9 +198,15 @@ def python_mod_req(source_path, workspace, **kwargs): def splitter(*args, **kwargs): - env = jinja2.Environment( - loader=jinja2.FileSystemLoader(args[0]), undefined=jinja2.StrictUndefined - ) + loader = FileSystemLoader(args[0]) + env = Environment(loader=loader, undefined=StrictUndefined) + + def include_raw(name): + """Format: {{ include_raw('') }}""" + return Markup(loader.get_source(env, name)[0]) + + env.globals['include_raw'] = include_raw + for file in kwargs['files']: tmpl = env.get_template(file) with codecs.open(os.path.join(args[0], (os.path.splitext(file)[0])), 'w', 'utf-8') as f: