diff options
Diffstat (limited to 'bin')
-rwxr-xr-x | bin/analyze-archive.py | 1 | ||||
-rwxr-xr-x | bin/merge-external.py | 55 |
2 files changed, 56 insertions, 0 deletions
diff --git a/bin/analyze-archive.py b/bin/analyze-archive.py index 18f1ad5..dfab7b5 100755 --- a/bin/analyze-archive.py +++ b/bin/analyze-archive.py @@ -608,6 +608,7 @@ if __name__ == "__main__": if args.info: print(" ".join(raw_data.filenames) + ":") + data_source = "???" if raw_data.ptalog: options = " --".join( map(lambda kv: f"{kv[0]}={str(kv[1])}", raw_data.ptalog["opt"].items()) diff --git a/bin/merge-external.py b/bin/merge-external.py new file mode 100755 index 0000000..7711408 --- /dev/null +++ b/bin/merge-external.py @@ -0,0 +1,55 @@ +#!/usr/bin/env python3 + +import argparse +import io +import json +import sys +import tarfile + +from dfatool.utils import soft_cast_float + + +if __name__ == "__main__": + + parser = argparse.ArgumentParser( + formatter_class=argparse.RawDescriptionHelpFormatter, description=__doc__ + ) + parser.add_argument( + "--config", + metavar="<key>=<value>[,<key>=<value>,...]", + type=str, + help="Add config to archived ptalog.json file", + ) + parser.add_argument("ptalog_file", type=str, nargs=1) + parser.add_argument("energy_files", nargs="+") + args = parser.parse_args() + + with open(args.ptalog_file[0], "r") as f: + ptalog = json.load(f) + + ptalog_dir = "/".join(args.ptalog_file[0].split("/")[:-1]) + "/" + ptalog_prefix = ".".join(args.ptalog_file[0].split(".")[:-1]) + tar_file = f"{ptalog_prefix}.tar" + + if args.config: + for kv in args.config.split(","): + k, v = kv.split("=") + v = soft_cast_float(v) + ptalog["configs"][0][k] = v + + # TODO optional config (z.B. offset / limit) -> ptalog["configs"].append(...) + + with tarfile.open(tar_file, "w") as tf: + for energy_file in args.energy_files: + energy_dir = "/".join(energy_file.split("/")[:-1]) + "/" + energy_target = energy_file.removeprefix(energy_dir) + tf.add(energy_file, energy_target) + ptalog["files"][0].append(energy_target) + + ptalog_content = json.dumps(ptalog).encode("utf-8") + t = tarfile.TarInfo("ptalog.json") + t.size = len(ptalog_content) + t.uid = 1000 + t.gid = 1000 + t.mode = 0o600 + tf.addfile(t, io.BytesIO(ptalog_content)) |