From df73880844d7d6b78aab773bdd7814710e7eede4 Mon Sep 17 00:00:00 2001 From: Alex J Burke Date: Sat, 10 Feb 2024 13:15:39 +0100 Subject: [PATCH] Repair run_example and allow configuring html_dir via the command line. Support a directory argument of "." to allow outputting to an output folder in the cwd with an automatic suffix: ./_autoarchaologist While here add top level run_example wrapper shell script in advance of a future change to provide a unified run CLI. --- .gitignore | 4 ++++ Makefile | 4 ++++ ddhf/ddhf/decorated_context.py | 18 +++++++++++++++++- output/.gitkeep | 0 run_example.py | 29 ++++++++++++++++++++--------- 5 files changed, 45 insertions(+), 10 deletions(-) create mode 100644 Makefile create mode 100644 output/.gitkeep diff --git a/.gitignore b/.gitignore index 53bb4e6..049c68f 100644 --- a/.gitignore +++ b/.gitignore @@ -6,5 +6,9 @@ __pycache__/ # Sphinx documentation docs/_build/ +# Build files +venv/ + # Temporary files _.* +/output/ diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..90d3a64 --- /dev/null +++ b/Makefile @@ -0,0 +1,4 @@ +default: example + +example: + ./venv/bin/python3 run_example.py -d . diff --git a/ddhf/ddhf/decorated_context.py b/ddhf/ddhf/decorated_context.py index 52104a3..901b7bf 100644 --- a/ddhf/ddhf/decorated_context.py +++ b/ddhf/ddhf/decorated_context.py @@ -110,13 +110,29 @@ def from_argv(self): "AUTOARCHAEOLOGIST_BITSTORE_CACHE": "ddhf_bitstore_cache", } -def main(job, html_subdir="tmp", **kwargs): +def parse_arguments(argv=None): + parser = argparse.ArgumentParser() + parser.add_argument('-o', '--out', default='/tmp/_autoarchaologist') + + args = parser.parse_args(args=argv) + if args.out == '.': + args.out = os.path.join(os.getcwd(), "_autoarchaologist") + return args + +def main(job, html_subdir, **kwargs): + args = parse_arguments() + kwargs["html_dir"] = args.out + ''' A standard main routine to reduce boiler-plate ''' for key in os.environ: i = OK_ENVS.get(key) if i: kwargs[i] = os.environ[key] + if 'html_dir' not in kwargs: + raise AttributeError("missing: html_dir") + + kwargs['html_dir'] = os.path.join(kwargs['html_dir'], html_subdir) kwargs.setdefault('download_links', True) kwargs.setdefault('download_limit', 1 << 20) diff --git a/output/.gitkeep b/output/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/run_example.py b/run_example.py index ad7c063..5fddbc1 100644 --- a/run_example.py +++ b/run_example.py @@ -1,19 +1,35 @@ +import argparse import os +import sys import autoarchaeologist -from autoarchaeologist.generic.bigdigits import BigDigits +from autoarchaeologist.generic.bigtext import BigText from autoarchaeologist.generic.samesame import SameSame from autoarchaeologist.data_general.absbin import AbsBin from autoarchaeologist.data_general.papertapechecksum import DGC_PaperTapeCheckSum +def parse_arguments(argv=None): + parser = argparse.ArgumentParser() + parser.add_argument("-d", "--dir", default="/tmp/_autoarchaologist") + + args = parser.parse_args(args=argv) + if args.dir == ".": + args.dir = os.path.join(os.getcwd(), "output", "_autoarchaologist") + return args if __name__ == "__main__": + args = parse_arguments() + + try: + os.mkdir(args.dir) + except FileExistsError: + pass - ctx = autoarchaeologist.Excavation() + ctx = autoarchaeologist.Excavation(html_dir=args.dir) - ctx.add_examiner(BigDigits) + ctx.add_examiner(BigText) ctx.add_examiner(AbsBin) ctx.add_examiner(DGC_PaperTapeCheckSum) ctx.add_examiner(SameSame) @@ -22,11 +38,6 @@ ctx.start_examination() - try: - os.mkdir("/tmp/_autoarchaologist") - except FileExistsError: - pass - - ctx.produce_html(html_dir="/tmp/_autoarchaologist") + ctx.produce_html() print("Now point your browser at", ctx.filename_for(ctx).link)