From 4670ff7336d20c9482c79d2d20c889842e32c742 Mon Sep 17 00:00:00 2001 From: Nemo Date: Sat, 17 Dec 2022 15:30:37 +0530 Subject: [PATCH] [maven] Updates to maven automation 1. Drop RC and milestone releases by adopting a simple version regex. Drops a few non-stable releases from jreleaser and tomcat. Tested against all of the maven automated pages 2. Fix pages with multiple auto: maven entries. In particular, groovy was using this, but the newer 4.0 releases were not being written correctly to disk. --- src/maven.py | 32 ++++++++++++++++++++++---------- 1 file changed, 22 insertions(+), 10 deletions(-) diff --git a/src/maven.py b/src/maven.py index 88f89af3..95185bff 100644 --- a/src/maven.py +++ b/src/maven.py @@ -5,7 +5,17 @@ import json import frontmatter import urllib.request import datetime +import re +# Major.Minor + Optional Patch, no RC, nightly releases. +VERSION_REGEX = r'^\d+\.\d+(\.\d+)?$' + +# TODO: Add support for custom regexes +# Hasn't been needed yet, so only write if we need it +def valid_version(version): + if re.match(VERSION_REGEX, version): + return True + return False def fetch_releases(package_identifier): group_id, artifact_id = package_identifier.split("/") @@ -21,10 +31,7 @@ def fetch_releases(package_identifier): for row in data["response"]["docs"]: date = datetime.datetime.utcfromtimestamp(row["timestamp"] / 1000) version = row["v"] - if not any( - exception in version - for exception in ["alpha", "beta", "nightly", "rc", "-M"] - ): + if valid_version(version): abs_date = date.strftime("%Y-%m-%d") releases[version] = abs_date print("%s: %s" % (version, abs_date)) @@ -40,20 +47,25 @@ def update_releases(product_filter=None): if product_filter and product_name != product_filter: continue with open(product_file, "r") as f: + releases = {} + found_maven = False + print("::group::%s" % product_name) data = frontmatter.load(f) if "auto" in data: for config in data["auto"]: for key, _ in config.items(): if key == "maven": - update_product(product_name, config) + found_maven = True + releases = releases | fetch_releases(config["maven"]) + if found_maven: + write_file(product_name, releases) + print("::endgroup::") -def update_product(product_name, config): - print("::group::%s" % product_name) - r = fetch_releases(config["maven"]) +def write_file(product_name, releases): with open("releases/%s.json" % product_name, "w") as f: - f.write(json.dumps(r, indent=2)) - print("::endgroup::") + f.write(json.dumps(releases, indent=2)) + if __name__ == "__main__":