summaryrefslogtreecommitdiff
path: root/bin/merge-external.py
diff options
context:
space:
mode:
authorDaniel Friesel <daniel.friesel@uos.de>2021-03-18 16:37:14 +0100
committerDaniel Friesel <daniel.friesel@uos.de>2021-03-18 16:37:14 +0100
commit8a6ea3eb8062ef58d80d530b2d6affa55f82f28e (patch)
tree4071c4abecfb605c0fba55e933a8276f25e28dd4 /bin/merge-external.py
parentf4571b73b86c28c3e058277061846b52bd004da2 (diff)
add preliminary Keysight DLog support
Diffstat (limited to 'bin/merge-external.py')
-rwxr-xr-xbin/merge-external.py55
1 files changed, 55 insertions, 0 deletions
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))