From 2cbf80793657ab549140ee8a725777d4c03db357 Mon Sep 17 00:00:00 2001 From: Marc Wrobel Date: Sun, 1 Feb 2026 12:26:33 +0100 Subject: [PATCH] [chef-versions] Add auto method (#554) Also remove `chef-inspec` and `chef-infra` as they don't work anymore following changes on https://docs.chef.io/. --- src/chef-inspec.py | 19 ------------------- src/{chef-infra.py => chef-versions.py} | 13 +++++++++++-- 2 files changed, 11 insertions(+), 21 deletions(-) delete mode 100644 src/chef-inspec.py rename src/{chef-infra.py => chef-versions.py} (73%) diff --git a/src/chef-inspec.py b/src/chef-inspec.py deleted file mode 100644 index 455fe979..00000000 --- a/src/chef-inspec.py +++ /dev/null @@ -1,19 +0,0 @@ -from common import dates, github, http -from common.releasedata import ProductData, config_from_argv - -"""Fetch released versions from docs.chef.io and retrieve their date from GitHub. -docs.chef.io needs to be scraped because not all tagged versions are actually released. - -More context on https://github.com/endoflife-date/endoflife.date/pull/4425#discussion_r1447932411. -""" - -config = config_from_argv() -with ProductData(config.product) as product_data: - html = http.fetch_html(config.url) - released_versions = [h2.get('id') for h2 in html.find_all('h2', id=True) if h2.get('id')] - - for release in github.fetch_releases("inspec/inspec"): - sanitized_version = release.tag_name.replace("v", "") - if sanitized_version in released_versions: - date = dates.parse_datetime(release.published_at) - product_data.declare_version(sanitized_version, date) diff --git a/src/chef-infra.py b/src/chef-versions.py similarity index 73% rename from src/chef-infra.py rename to src/chef-versions.py index 7fa606b5..6e789071 100644 --- a/src/chef-infra.py +++ b/src/chef-versions.py @@ -1,3 +1,5 @@ +import logging + from common import dates, http from common.git import Git from common.releasedata import ProductData, config_from_argv @@ -11,11 +13,18 @@ More context on https://github.com/endoflife-date/endoflife.date/pull/4425#discu config = config_from_argv() with ProductData(config.product) as product_data: html = http.fetch_html(config.url) - released_versions = [h2.get('id') for h2 in html.find_all('h2', id=True) if h2.get('id')] + + released_versions = [] + for h2 in html.find_all('h2'): + title = h2.get_text(strip=True) + match = config.first_match(title) + if not match: + logging.warning(f"Skipping '{title}', no match found") + continue + released_versions.append(config.render(match)) git = Git(config.data.get('repository')) git.setup(bare=True) - versions = git.list_tags() for version, date_str in versions: version = version.startswith("v") and version[1:] or version # Remove 'v' prefix if present