Feat: code planners and tests
This commit is contained in:
parent
ce98f46bca
commit
6e718b987a
27
bopytex/actions.py
Normal file
27
bopytex/actions.py
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
def generate():
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
def compile():
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
def activate_corr():
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
def join_pdf():
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
def clean():
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
ACTIONS = {
|
||||||
|
"GENERATE": generate,
|
||||||
|
"COMPILE": compile,
|
||||||
|
"ACTIVATE_CORR": activate_corr,
|
||||||
|
"JOIN_PDF": join_pdf,
|
||||||
|
"clean": clean,
|
||||||
|
}
|
63
bopytex/planner.py
Normal file
63
bopytex/planner.py
Normal file
@ -0,0 +1,63 @@
|
|||||||
|
""" Produce tasks to do
|
||||||
|
|
||||||
|
It essentially place things at the right place and define the way that files are named.
|
||||||
|
|
||||||
|
"""
|
||||||
|
from dataclasses import dataclass
|
||||||
|
|
||||||
|
|
||||||
|
@dataclass
|
||||||
|
class Task:
|
||||||
|
action: str
|
||||||
|
args: dict
|
||||||
|
deps: list
|
||||||
|
output: str
|
||||||
|
|
||||||
|
|
||||||
|
def generate(template: str, meta: dict):
|
||||||
|
"""Create a task to generate a subject"""
|
||||||
|
return Task(
|
||||||
|
action="GENERATE",
|
||||||
|
args=meta,
|
||||||
|
deps=[template],
|
||||||
|
output=meta["subject"] + template[3:],
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
def activate_corr_on(src: str):
|
||||||
|
"""Create a task to activate correction for src"""
|
||||||
|
return Task(
|
||||||
|
action="ACTIVATE_CORR",
|
||||||
|
args={},
|
||||||
|
deps=[src],
|
||||||
|
output="corr_" + src,
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
def compile_pdf(src: str):
|
||||||
|
"""Create a task to compile src"""
|
||||||
|
return Task(
|
||||||
|
action="COMPILE",
|
||||||
|
args={},
|
||||||
|
deps=[src],
|
||||||
|
output=src[:-3] + "pdf"
|
||||||
|
)
|
||||||
|
|
||||||
|
def join_pdfs(pdfs: list):
|
||||||
|
""" Create task to join pdf together """
|
||||||
|
return Task(
|
||||||
|
action="JOIN",
|
||||||
|
args={},
|
||||||
|
deps=pdfs,
|
||||||
|
output="joined.pdf"
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
def clean(files: list):
|
||||||
|
""" Create task to clean files"""
|
||||||
|
return Task(
|
||||||
|
action="CLEAN",
|
||||||
|
args={},
|
||||||
|
deps=files,
|
||||||
|
output=None
|
||||||
|
)
|
0
test/__init__.py
Normal file
0
test/__init__.py
Normal file
46
test/test_planner.py
Normal file
46
test/test_planner.py
Normal file
@ -0,0 +1,46 @@
|
|||||||
|
from bopytex.planner import activate_corr_on, clean, compile_pdf, generate, join_pdfs
|
||||||
|
|
||||||
|
|
||||||
|
def test_build_task_generate():
|
||||||
|
template = "tpl_source.tex"
|
||||||
|
task = generate(template, {"subject": "01"})
|
||||||
|
assert task.action == "GENERATE"
|
||||||
|
assert task.args == {"subject": "01"}
|
||||||
|
assert task.deps == [template]
|
||||||
|
assert task.output == "01_source.tex"
|
||||||
|
|
||||||
|
|
||||||
|
def test_build_task_activate_corr_on():
|
||||||
|
src = "source.tex"
|
||||||
|
task = activate_corr_on(src)
|
||||||
|
assert task.action == "ACTIVATE_CORR"
|
||||||
|
assert task.args == {}
|
||||||
|
assert task.deps == [src]
|
||||||
|
assert task.output == "corr_source.tex"
|
||||||
|
|
||||||
|
|
||||||
|
def test_build_task_compile():
|
||||||
|
src = "source.tex"
|
||||||
|
task = compile_pdf(src)
|
||||||
|
assert task.action == "COMPILE"
|
||||||
|
assert task.args == {}
|
||||||
|
assert task.deps == [src]
|
||||||
|
assert task.output == "source.pdf"
|
||||||
|
|
||||||
|
|
||||||
|
def test_build_task_join():
|
||||||
|
pdfs = [f"{i}_source.pdf" for i in range(3)]
|
||||||
|
task = join_pdfs(pdfs)
|
||||||
|
assert task.action == "JOIN"
|
||||||
|
assert task.args == {}
|
||||||
|
assert task.deps == pdfs
|
||||||
|
assert task.output == "joined.pdf"
|
||||||
|
|
||||||
|
|
||||||
|
def test_build_task_compile():
|
||||||
|
files = ["source.aux", "source.log"]
|
||||||
|
task = clean(files)
|
||||||
|
assert task.action == "CLEAN"
|
||||||
|
assert task.args == {}
|
||||||
|
assert task.deps == files
|
||||||
|
assert task.output is None
|
Loading…
Reference in New Issue
Block a user