diff options
Diffstat (limited to 'src/ee/tools/part_apply_function.py')
-rw-r--r-- | src/ee/tools/part_apply_function.py | 29 |
1 files changed, 24 insertions, 5 deletions
diff --git a/src/ee/tools/part_apply_function.py b/src/ee/tools/part_apply_function.py index bece364..af51b5a 100644 --- a/src/ee/tools/part_apply_function.py +++ b/src/ee/tools/part_apply_function.py @@ -4,7 +4,7 @@ from pathlib import Path from typing import List from ee import tools, EeException -from ee.part import Part, PartDb, load_db, save_db +from ee.part import Part, load_db, save_db from ee.project import Project @@ -23,15 +23,29 @@ def load_functions(function_names): return functions -def work(in_path: Path, out_path: Path, report_path: Path, function_names: List[str]): - functions = load_functions(function_names) +def work(in_path: Path, out_path: Path, report_path: Path, function_names: List[str], arguments: List[str]): + factories = load_functions(function_names) in_parts = load_db(in_path) - parts = PartDb() + kwargs = {} + for a in arguments: + import re + k, v = re.split(":", a, maxsplit=1) + kwargs[k] = v + + functions = [[factory[0], factory[1](**kwargs)] for factory in factories] tools.mk_parents(report_path) with report_path.open("w") as rpt: + + if len(kwargs): + print("Arguments:", file=rpt) + print("", file=rpt) + for key in sorted(kwargs): + print(" * {}={}".format(key, kwargs[key]), file=rpt) + print("", file=rpt) + for xml in in_parts.iterparts(): part = Part(xml) @@ -57,6 +71,11 @@ parser.add_argument("--function", nargs="*", metavar="FUNCTION") +parser.add_argument("--argument", + required=True, + nargs="*", + metavar="ARG") + parser.add_argument("--execution", default="default") @@ -64,4 +83,4 @@ args = parser.parse_args() project = Project.load() report = project.report_dir / "apply-function" / (args.execution + ".rst") -work(Path(args.in_path), Path(args.out), report, args.function) +work(Path(args.in_path), Path(args.out), report, args.function, args.argument) |