diff --git a/zppy/__main__.py b/zppy/__main__.py index 3685ace4..9e647045 100644 --- a/zppy/__main__.py +++ b/zppy/__main__.py @@ -3,6 +3,8 @@ import importlib import io import os +import shutil +from datetime import datetime, timezone from typing import Any, List, Tuple from configobj import ConfigObj @@ -42,18 +44,36 @@ def main(): _validate_config(config) # Add templateDir to config config["default"]["templateDir"] = template_dir + # Get timestamp for provenance + # Provenance cfg will be placed in both `output` and `www` + ts_utc = datetime.now(timezone.utc).strftime("%Y%m%d_%H%M%S_%f") # Output script directory output = config["default"]["output"] username = os.environ.get("USER") output = output.replace("$USER", username) script_dir = os.path.join(output, "post/scripts") job_ids_file = os.path.join(script_dir, "jobids.txt") + provenance = os.path.join(script_dir, f"provenance.{ts_utc}.cfg") try: os.makedirs(script_dir) + shutil.copy(args.config, provenance) except OSError as exc: if exc.errno != errno.EEXIST: raise OSError("Cannot create script directory") pass + # Web output directory + www = config["default"]["www"] + username = os.environ.get("USER") + www = www.replace("$USER", username) + www_case_dir = os.path.join(www, config["default"]["case"]) + provenance = os.path.join(www_case_dir, f"provenance.{ts_utc}.cfg") + try: + os.makedirs(www_case_dir) + shutil.copy(args.config, provenance) + except OSError as exc: + if exc.errno != errno.EEXIST: + raise OSError("Cannot create www case directory") + pass machine_info = _get_machine_info(config) config = _determine_parameters(machine_info, config) if args.last_year: