feat: create generate worker

This commit is contained in:
Bertrand Benjamin 2022-04-10 15:50:58 +02:00
parent 08411bd42d
commit 76a033cf43
3 changed files with 58 additions and 28 deletions

View File

@ -0,0 +1,13 @@
from jinja2.environment import Template
def generate(args, deps, output):
env = args["jinja2"]["environment"]
template = env.get_template(deps[0])
with open(output, "w") as out:
out.write(tpl2tex(template, metas=args))
yield f"GENERATE - {deps[0]} to {output}"
def tpl2tex(template: Template, metas: dict = {}) -> str:
return template.render(metas)

View File

@ -1,28 +0,0 @@
""" A worker consumes tasks """
def generate():
pass
def compile():
pass
def activate_corr():
pass
def join_pdf():
pass
def clean():
pass
WORKERS = {
"GENERATE": generate,
"COMPILE": compile,
"ACTIVATE_CORR": activate_corr,
"JOIN_PDF": join_pdf,
"CLEAN": clean,
}

View File

@ -0,0 +1,45 @@
import os
import jinja2
from pathlib import Path
from bopytex.worker.generate import tpl2tex, generate
import pytest
def test_tpl2tex():
tpl = "Plop {{a}}"
jinja2_tpl = jinja2.Template(tpl)
fed = tpl2tex(jinja2_tpl, metas={"a": 1})
assert fed == "Plop 1"
@pytest.fixture
def template_path(tmp_path):
template = tmp_path / "template.j2"
with open(template, "w") as tpl:
tpl.write("Plop {{ a }}")
return template
@pytest.fixture
def jinja2_env(tmp_path):
templateEnv = jinja2.Environment(loader=jinja2.FileSystemLoader(tmp_path))
return templateEnv
def test_generate(template_path, jinja2_env):
tmp_path = template_path.parent
os.chdir(tmp_path)
assert template_path.exists
template = str(template_path.name)
output = "output"
result = next(generate(
args={"a": 2, "jinja2": {"environment": jinja2_env}},
deps=[template],
output=output,
))
assert result == "GENERATE - template.j2 to output"
with open(output, "r") as out:
lines = out.readlines()
assert lines == ["Plop 2"]