From 42c11897814fa5d445a8f486653aeddea88a33c7 Mon Sep 17 00:00:00 2001 From: Marc Wrobel Date: Sat, 12 Jul 2025 12:01:54 +0200 Subject: [PATCH] Copy releases from products frontmatter (#465) Copy releases, without their properties, from product data (frontmatter) to release data. This script is not intended to be declared in the frontmatter: it is for internal use only. It executes before all other scripts, and helps the following scripts to work with releases. --- src/_copy_product_releases.py | 12 ++++++++++++ src/common/releasedata.py | 5 +++-- update-release-data.py | 11 ++++++++--- 3 files changed, 23 insertions(+), 5 deletions(-) create mode 100644 src/_copy_product_releases.py diff --git a/src/_copy_product_releases.py b/src/_copy_product_releases.py new file mode 100644 index 00000000..8916ac9d --- /dev/null +++ b/src/_copy_product_releases.py @@ -0,0 +1,12 @@ +from common import releasedata + +"""Copy releases, without their properties, from product data (frontmatter) to release data. + +This script is not intended to be declared in the frontmatter: it is for internal use only. +It executes before all other scripts, and helps the following scripts to work with releases. +""" + +frontmatter, _ = releasedata.parse_argv(ignore_auto_config=True) +with releasedata.ProductData(frontmatter.name) as product_data: + for frontmatter_release in frontmatter.get_releases(): + product_data.get_release(frontmatter_release.get("releaseCycle")) diff --git a/src/common/releasedata.py b/src/common/releasedata.py index f0164a72..0397680c 100644 --- a/src/common/releasedata.py +++ b/src/common/releasedata.py @@ -193,7 +193,7 @@ class ProductData: def config_from_argv() -> endoflife.AutoConfig: return parse_argv()[1] -def parse_argv() -> tuple[endoflife.ProductFrontmatter, endoflife.AutoConfig]: +def parse_argv(ignore_auto_config: bool = False) -> tuple[endoflife.ProductFrontmatter, endoflife.AutoConfig]: parser = argparse.ArgumentParser(description=sys.argv[0]) parser.add_argument('-p', '--product', required=True, help='path to the product') parser.add_argument('-m', '--method', required=True, help='method to filter by') @@ -205,4 +205,5 @@ def parse_argv() -> tuple[endoflife.ProductFrontmatter, endoflife.AutoConfig]: logging.basicConfig(format="%(message)s", level=(logging.DEBUG if args.verbose else logging.INFO)) product = endoflife.ProductFrontmatter(Path(args.product)) - return product, product.auto_config(args.method, args.url) + auto_config = None if ignore_auto_config else product.auto_config(args.method, args.url) + return product, auto_config diff --git a/update-release-data.py b/update-release-data.py index 9f9ac2c4..55ac07de 100644 --- a/update-release-data.py +++ b/update-release-data.py @@ -105,13 +105,18 @@ def run_scripts(summary: GitHubStepSummary, products: list[ProductFrontmatter]) exec_summary = ScriptExecutionSummary() for product in products: - if not product.has_auto_configs(): - continue + configs = product.auto_configs() + + if not configs: + continue # skip products without auto configs + + # Add default configs + configs = [AutoConfig(product.name, {"_copy_product_releases": ""})] + configs with GitHubGroup(product.name): try: __delete_data(product) - for config in product.auto_configs(): + for config in configs: success = __run_script(product, config, exec_summary) if not success: __revert_data(product)