fix: support builds[].version metadata structure in update-gh
Packages use version/release fields nested inside builds[] entries rather than at the top level of metadata.yaml.
This commit is contained in:
+21
-4
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user