From a985e6218f44eaa19397861232715a21158128f3 Mon Sep 17 00:00:00 2001 From: Marc Wrobel Date: Tue, 15 Jul 2025 23:22:21 +0200 Subject: [PATCH] [chrome-releases] Add auto method (#469) Based on https://chromiumdash.appspot.com API. --- src/chrome-releases.py | 20 ++++++++++++++++++++ src/common/releasedata.py | 3 +++ 2 files changed, 23 insertions(+) create mode 100644 src/chrome-releases.py diff --git a/src/chrome-releases.py b/src/chrome-releases.py new file mode 100644 index 00000000..ae6d0ef0 --- /dev/null +++ b/src/chrome-releases.py @@ -0,0 +1,20 @@ +import re + +from common import dates, http +from common.releasedata import ProductData, config_from_argv + +"""Fetches versions from https://chromiumdash.appspot.com API.""" + +FIRST_AVAILABLE_VERSION = 7 +DATE_REGEX = re.compile(r'Stable release date:') + +config = config_from_argv() +with ProductData(config.product) as product_data: + latest_release = int(product_data.get_latest_release().name()) + n_available_releases = latest_release - FIRST_AVAILABLE_VERSION + + releases = http.fetch_json(f"{config.url}?offset=-{n_available_releases}&n={n_available_releases + 1}") + for json_release in releases.get("mstones", []): + release = product_data.get_release(str(json_release["mstone"])) + release_date = dates.parse_datetime(json_release["stable_date"]) + release.set_release_date(release_date) diff --git a/src/common/releasedata.py b/src/common/releasedata.py index d3a4adaa..9f8ca78d 100644 --- a/src/common/releasedata.py +++ b/src/common/releasedata.py @@ -160,6 +160,9 @@ class ProductData: self.updated = True return self.releases[release_name] + def get_latest_release(self) -> ProductRelease | None: + return next(iter(self.releases.values()), None) # assuming releases are sorted in descending order + def remove_release(self, release_name: str) -> None: if release_name not in self.releases: logging.warning(f"release {release_name} cannot be removed as it does not exist for {self}")