From 7ab6b720d170f0c918add11ea0e448bab1c25a11 Mon Sep 17 00:00:00 2001
From: Tobias Poganiuch <tobias.poganiuch@garz-fricke.com>
Date: Wed, 19 Jan 2022 13:29:56 +0000
Subject: [PATCH] metadata: Added generation of metainfo to package_release

BCS DevOps-000032
---
 package_release.py | 55 ++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 55 insertions(+)

diff --git a/package_release.py b/package_release.py
index 3c1145b3..bb1d6fcd 100755
--- a/package_release.py
+++ b/package_release.py
@@ -72,6 +72,51 @@ def copy_files(files, input_dir, subdir, output_dir, outlocal_dir):
     return md5sums
 
 
+def generate_metadata(
+    machine,
+    version,
+    artifacts_image,
+    sdk,
+    output_dir,
+    outlocal_dir,
+):
+    """Generates a metainfo.json for the release"""
+
+    # Join filepath for metadata
+
+    if output_dir is not None:
+        filepath = os.path.join(output_dir, machine, "metainfo.json")
+    elif outlocal_dir is not None:
+        filepath = os.path.join(outlocal_dir, machine, "metainfo.json")
+    else:
+        print("Error: Filepath is empty")
+        return -1
+
+    # Collect metadata and write to metainfo.json
+
+    for artifact in artifacts_image:
+        if artifact.endswith(machine + ".tar.gz"):
+            image_general = artifact
+        elif artifact.endswith(machine + ".wic"):
+            image_wic = artifact
+
+    metadata = dict()
+
+    metadata["images"] = dict()
+    metadata["version"] = version
+    metadata["machine"] = machine
+    metadata["sdk"] = sdk
+
+    if image_general is not None:
+        metadata["images"]["general"] = image_general
+
+    if image_wic is not None:
+        metadata["images"]["wic"] = image_wic
+
+    with open(filepath, "w", encoding="utf-8") as file:
+        file.write(json.dumps(metadata))
+
+
 def main():
     parser = argparse.ArgumentParser()
     parser.add_argument(
@@ -188,6 +233,16 @@ def main():
             md5sums,
         )
 
+    # Generate metadata
+    generate_metadata(
+        machine,
+        version,
+        artifacts_image,
+        sdkname,
+        output_dir,
+        outlocal_dir,
+    )
+
     # Handle SDK if available
     if args.sdk_dir is not None:
         sdkfiles = glob.glob(os.path.join(args.sdk_dir, sdkname + "*"))
-- 
GitLab