fix: support builds[].version metadata structure in update-gh
ci/woodpecker/pr/pre-commit Pipeline was successful
ci/woodpecker/pr/build-almalinux8 Pipeline was successful
ci/woodpecker/pr/build-almalinux9 Pipeline was successful

Packages use version/release fields nested inside builds[] entries
rather than at the top level of metadata.yaml.
This commit is contained in:
2026-05-02 01:29:15 +10:00
parent eafcc7abc4
commit 17fec6b015
+21 -4
View File
@@ -293,7 +293,11 @@ def update_package_metadata(package_dir: Path, new_version: str, dry_run: bool =
with open(metadata_file, 'r') as f:
metadata = yaml.safe_load(f)
old_version = metadata.get('version', 'unknown')
builds = metadata.get('builds', [])
if builds and isinstance(builds, list) and builds[0].get('version') is not None:
old_version = str(builds[0].get('version', 'unknown'))
else:
old_version = metadata.get('version', 'unknown')
logger.info(f"Updating {metadata.get('name', 'unknown')} from {old_version} to {new_version}")
if dry_run:
@@ -301,8 +305,15 @@ def update_package_metadata(package_dir: Path, new_version: str, dry_run: bool =
return True
# Update version in metadata and reset release to 1
metadata['version'] = new_version
metadata['release'] = 1
# Support both top-level version and builds[].version
builds = metadata.get('builds', [])
if builds and isinstance(builds, list) and builds[0].get('version') is not None:
for build in builds:
build['version'] = new_version
build['release'] = 1
else:
metadata['version'] = new_version
metadata['release'] = 1
# Write updated metadata
with open(metadata_file, 'w') as f:
@@ -340,7 +351,6 @@ def check_package_updates(package_dir: Path, dry_run: bool = False) -> bool:
metadata = yaml.safe_load(f)
package_name = metadata.get('name', package_dir.name)
current_version = metadata.get('version')
github_repo = metadata.get('github')
claude_ai = metadata.get('claude_ai', False)
@@ -348,6 +358,13 @@ def check_package_updates(package_dir: Path, dry_run: bool = False) -> bool:
logger.debug(f"Package {package_name} has no GitHub repo or claude_ai configured")
return True
# Support both top-level version and builds[].version
builds = metadata.get('builds', [])
if builds and isinstance(builds, list) and builds[0].get('version'):
current_version = str(builds[0].get('version'))
else:
current_version = metadata.get('version')
if not current_version:
logger.warning(f"Package {package_name} has no version in metadata")
return False