From c87a2fb0d83b9eb36a7433189ee479b94a210a7b Mon Sep 17 00:00:00 2001
From: Tor-Einar Skog <tor-einar.skog@nibio.no>
Date: Fri, 5 Jan 2024 14:31:49 +0100
Subject: [PATCH] Add script that generates Maven dependencies XML from GitLab
 package registry

---
 build_models_xml.py |  59 +++++++++++++++++++++++
 models_bak.xml      | 112 ++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 171 insertions(+)
 create mode 100755 build_models_xml.py
 create mode 100644 models_bak.xml

diff --git a/build_models_xml.py b/build_models_xml.py
new file mode 100755
index 0000000..68fff73
--- /dev/null
+++ b/build_models_xml.py
@@ -0,0 +1,59 @@
+#!/usr/bin/python3
+
+# Fetch package registry list, build models.xml structure
+# with the latest version of each model
+
+import sys
+import requests
+import xml.etree.ElementTree as ET
+
+if len(sys.argv) == 2 and sys.argv[1] == "-h":
+    print("""usage: build_with_models [-s]""")
+    exit(0)
+
+snapshot = True if len(sys.argv) == 2 and sys.argv[1] == "-s" else False
+
+url = "https://gitlab.nibio.no/api/v4/projects/401/packages?per_page=100&order_by=version&sort=desc"
+all_packages = []
+
+response = requests.get(url)
+
+if response.status_code == 200:
+    # Get the first page contents
+    data = response.json()
+    all_packages.extend(data)
+    # Iterate the next pages
+    while 'next' in response.links:
+        next_url = response.links["next"]["url"]
+        response = requests.get(next_url)
+        if response.status_code == 200:
+            data = response.json()
+            all_packages.extend(data)
+
+
+models = {}
+
+model_prefix = "no/nibio/vips/model/"
+
+for package in all_packages:
+    if package["name"].find(model_prefix) >=0 and ((snapshot and package["version"].find("SNAPSHOT")>=0) or (not snapshot and package["version"].find("SNAPSHOT")<0)):
+        model_name = package["name"][len(model_prefix):]
+        if models.get(model_name, None) == None:
+            models[model_name] = {}
+            models[model_name]["version"] = package["version"]
+        else:
+            models[model_name]["version"] = package["version"] if package["version"] > models[model_name]["version"] else models[model_name]["version"]
+
+# Build partial Maven XML
+dependencies = ET.Element("dependencies")
+for model_name, value in models.items():
+    dependency = ET.SubElement(dependencies, "dependency")
+    ET.SubElement(dependency,"groupId").text = "no.nibio.vips.model"
+    ET.SubElement(dependency, "artifactId").text = model_name
+    ET.SubElement(dependency, "version").text = value["version"]
+    #print("%s %s" % (model_name, value["version"]))
+
+tree = ET.ElementTree(dependencies)
+ET.indent(tree, space="\t",level=0)
+# Dumps the indented XML to stdout
+ET.dump(tree)
diff --git a/models_bak.xml b/models_bak.xml
new file mode 100644
index 0000000..d9aa6a0
--- /dev/null
+++ b/models_bak.xml
@@ -0,0 +1,112 @@
+<dependencies>
+    <dependency>
+        <groupId>no.nibio.vips.model</groupId>
+        <artifactId>AlternariaModel</artifactId>
+        <version>1.1.4</version>
+    </dependency>
+    <dependency>
+        <groupId>no.nibio.vips.model</groupId>
+        <artifactId>AppleScabModel</artifactId>
+        <version>1.1.3</version>
+    </dependency>
+    <dependency>
+        <groupId>no.nibio.vips.model</groupId>
+        <artifactId>BarleyNetBlotchModel</artifactId>
+        <version>1.1.3</version>
+    </dependency>
+    <dependency>
+        <groupId>no.nibio.vips.model</groupId>
+        <artifactId>BremiaLactucaeModel</artifactId>
+        <version>1.1.3</version>
+    </dependency>
+    <dependency>
+        <groupId>no.nibio.vips.model</groupId>
+        <artifactId>DeliaRadicumModel</artifactId>
+        <version>1.1.3</version>
+    </dependency>
+    <dependency>
+        <groupId>no.nibio.vips.model</groupId>
+        <artifactId>DeliaRadicumFloralisObservationModel</artifactId>
+        <version>1.1.3</version>
+    </dependency>
+    <dependency>
+        <groupId>no.nibio.vips.model</groupId>
+        <artifactId>DOWNCASTModel</artifactId>
+        <version>1.1.3</version>
+    </dependency>
+    <dependency>
+        <groupId>fi.luke.vips.model</groupId>
+        <artifactId>FinnCerealModels</artifactId>
+        <version>1.1.3</version>
+    </dependency>
+    <dependency>
+        <groupId>no.nibio.vips.model</groupId>
+        <artifactId>GrassDryingModel</artifactId>
+        <version>1.1.3</version>
+    </dependency>
+    <dependency>
+        <groupId>no.nibio.vips.model</groupId>
+        <artifactId>LygusRugulipennisModel</artifactId>
+        <version>1.1.3</version>
+    </dependency>
+    <dependency>
+        <groupId>no.nibio.vips.model</groupId>
+        <artifactId>MamestraBrassicaeModel</artifactId>
+        <version>1.1.3</version>
+    </dependency>
+    <dependency>
+        <groupId>no.nibio.vips.model</groupId>
+        <artifactId>Model_LEAFBLOTCH</artifactId>
+        <version>1.1.3</version>
+    </dependency>
+    <dependency>
+        <groupId>no.nibio.vips.model</groupId>
+        <artifactId>Model_MAIZEPHENO</artifactId>
+        <version>1.1.3</version>
+    </dependency>
+    <dependency>
+        <groupId>no.nibio.vips.model</groupId>
+        <artifactId>NaerstadModel</artifactId>
+        <version>1.1.3</version>
+    </dependency>
+    <dependency>
+        <groupId>no.nibio.vips.model</groupId>
+        <artifactId>NegativePrognosisModel</artifactId>
+        <version>1.1.3</version>
+    </dependency>
+    <dependency>
+        <groupId>no.nibio.vips.model</groupId>
+        <artifactId>OatFloweringModel</artifactId>
+        <version>1.1.3</version>
+    </dependency>
+    <dependency>
+        <groupId>no.nibio.vips.model</groupId>
+        <artifactId>PsilaRosaeObservationModel</artifactId>
+        <version>1.1.3</version>
+    </dependency>
+    <dependency>
+        <groupId>no.nibio.vips.model</groupId>
+        <artifactId>PsilaRosaeTempModel</artifactId>
+        <version>1.1.3</version>
+    </dependency>
+    <dependency>
+        <groupId>no.nibio.vips.model</groupId>
+        <artifactId>RoughageNutritionModel</artifactId>
+        <version>1.1.5</version>
+    </dependency>
+    <dependency>
+        <groupId>no.nibio.vips.model</groupId>
+        <artifactId>SeptoriaApiicolaModel</artifactId>
+        <version>1.1.3</version>
+    </dependency>
+    <dependency>
+        <groupId>no.nibio.vips.model</groupId>
+        <artifactId>SeptoriaHumidityModel</artifactId>
+        <version>1.1.3</version>
+    </dependency>
+    <dependency>
+        <groupId>no.nibio.vips.model</groupId>
+        <artifactId>SeptoriaReferenceHumidityModel</artifactId>
+        <version>1.1.3</version>
+    </dependency>
+</dependencies>
\ No newline at end of file
-- 
GitLab