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