summaryrefslogtreecommitdiff
path: root/bin
diff options
context:
space:
mode:
Diffstat (limited to 'bin')
-rwxr-xr-xbin/analyze-archive.py1
-rwxr-xr-xbin/merge-external.py55
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))