[chrome-releases] Add auto method (#469)

Based on https://chromiumdash.appspot.com API.
This commit is contained in:
Marc Wrobel
2025-07-15 23:22:21 +02:00
parent d49da25226
commit a985e6218f
2 changed files with 23 additions and 0 deletions

20
src/chrome-releases.py Normal file
View File

@@ -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)

View File

@@ -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}")