Files
endoflife-date-release-data/src/npm.py
Marc Wrobel 42e511317d Add docker_hub method
Will replace Ruby-implemented dockerhub method (only used by Amazon Linux at the moment.
2023-08-11 22:08:22 +02:00

48 lines
1.2 KiB
Python

import json
import re
import sys
from common import endoflife
METHOD = "npm"
REGEX = r"^(?:(\d+\.(?:\d+\.)*\d+))$"
def fetch_releases(npm_id, regex):
releases = {}
if not isinstance(regex, list):
regex = [regex]
url = f"https://registry.npmjs.org/{npm_id}"
response = endoflife.fetch_url(url)
data = json.loads(response)
for version in data["time"]:
matches = False
for r in regex:
if re.match(r, version):
matches = True
release_datetime = data["time"][version]
if matches and release_datetime:
releases[version] = release_datetime.split("T")[0]
print(f"{version}: {releases[version]}")
return releases
def update_product(product_name, configs):
releases = {}
for config in configs:
config = {"regex": REGEX} | config
releases = releases | fetch_releases(config[METHOD], config["regex"])
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::")