From 42e511317d9369d5e3c0426e84fed33f8238ef4c Mon Sep 17 00:00:00 2001 From: Marc Wrobel Date: Wed, 2 Aug 2023 23:28:42 +0200 Subject: [PATCH] Add docker_hub method Will replace Ruby-implemented dockerhub method (only used by Amazon Linux at the moment. --- docker_hub.py | 48 ++++++++++++++++++++++++++++++++++++++++++++++++ src/npm.py | 3 --- 2 files changed, 48 insertions(+), 3 deletions(-) create mode 100644 docker_hub.py diff --git a/docker_hub.py b/docker_hub.py new file mode 100644 index 00000000..2dc9eaef --- /dev/null +++ b/docker_hub.py @@ -0,0 +1,48 @@ +import json +import re +import sys +from common import endoflife + +METHOD = "docker_hub" +REGEX = r"^(?:(\d+\.(?:\d+\.)*\d+))$" + + +def fetch_releases(url, regex, releases): + if not isinstance(regex, list): + regex = [regex] + + response = endoflife.fetch_url(url) + data = json.loads(response) + for result in data["results"]: + version = result["name"] + + matches = False + for r in regex: + if re.match(r, version): + matches = True + + if matches: + date = result['tag_last_pushed'].split("T")[0] + releases[version] = date + print(f"{version}: {date}") + + if data["next"]: + fetch_releases(data["next"], regex, releases) + + +def update_product(product_name, configs): + releases = {} + + for config in configs: + url = f"https://hub.docker.com/v2/repositories/{config[METHOD]}/tags?page_size=100&page=1" + config = {"regex": REGEX} | config + fetch_releases(url, config["regex"], releases) + + endoflife.write_releases(product_name, releases) + + +p_filter = sys.argv[1] if len(sys.argv) > 1 else None +for product, configs in endoflife.list_products(METHOD, p_filter).items(): + print(f"::group::{product}") + update_product(product, configs) + print("::endgroup::") diff --git a/src/npm.py b/src/npm.py index acda8929..01f64c62 100644 --- a/src/npm.py +++ b/src/npm.py @@ -4,9 +4,6 @@ import sys from common import endoflife METHOD = "npm" -DEFAULT_TAG_TEMPLATE = ( # Same as used in Ruby (update.rb) - "{{major}}{% if minor %}.{{minor}}{% if patch %}.{{patch}}{%endif%}{%endif%}" -) REGEX = r"^(?:(\d+\.(?:\d+\.)*\d+))$"