Add _common dir to jinja2 template loader

This allows include of template snippets from _common/ directory.
This commit is contained in:
Nicki Křížek 2026-04-07 14:43:11 +02:00
parent 4f8e3774bb
commit e34c3252d9

View file

@ -40,7 +40,12 @@ class TemplateEngine:
self.directory = Path(directory)
self.env_vars = dict(env_vars)
self.j2env = jinja2.Environment(
loader=jinja2.FileSystemLoader(str(self.directory)),
loader=jinja2.FileSystemLoader(
[
str(self.directory),
str(ALL["srcdir"]), # to allow _common/ includes
]
),
undefined=jinja2.StrictUndefined,
variable_start_string="@",
variable_end_string="@",
@ -65,12 +70,13 @@ class TemplateEngine:
variables which the engine was initialized with are also filled in. In
case of a variable name clash, `data` has precedence.
"""
available = self.j2env.list_templates()
if template is None:
template = f"{output}.j2.manual"
if not Path(template).is_file():
if template not in available:
template = f"{output}.j2"
if not Path(template).is_file():
raise RuntimeError('No jinja2 template found for "{output}"')
if template not in available:
raise RuntimeError(f'No jinja2 template found for "{output}"')
if data is None:
data = {**self.env_vars}