25 lines
909 B
Python
25 lines
909 B
Python
from common import dates, endoflife, http
|
|
from common.releasedata import ProductData, config_from_argv
|
|
|
|
"""Fetches releases from the Docker Hub API.
|
|
|
|
Unfortunately images creation date cannot be retrieved, so we had to use the tag_last_pushed field instead."""
|
|
|
|
def fetch_releases(p: ProductData, c: endoflife.AutoConfig, url: str) -> None:
|
|
data = http.fetch_json(url)
|
|
|
|
for result in data["results"]:
|
|
version_str = c.first_match(result["name"])
|
|
if version_str:
|
|
version = c.render(version_str)
|
|
date = dates.parse_datetime(result["tag_last_pushed"])
|
|
p.declare_version(version, date)
|
|
|
|
if data["next"]:
|
|
fetch_releases(p, c, data["next"])
|
|
|
|
|
|
config = config_from_argv()
|
|
with ProductData(config.product) as product_data:
|
|
fetch_releases(product_data, config, f"https://hub.docker.com/v2/repositories/{config.url}/tags?page_size=100&page=1")
|