fix: support builds[].version metadata structure in update-gh #114
+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:
|
with open(metadata_file, 'r') as f:
|
||||||
metadata = yaml.safe_load(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}")
|
logger.info(f"Updating {metadata.get('name', 'unknown')} from {old_version} to {new_version}")
|
||||||
|
|
||||||
if dry_run:
|
if dry_run:
|
||||||
@@ -301,8 +305,15 @@ def update_package_metadata(package_dir: Path, new_version: str, dry_run: bool =
|
|||||||
return True
|
return True
|
||||||
|
|
||||||
# Update version in metadata and reset release to 1
|
# Update version in metadata and reset release to 1
|
||||||
metadata['version'] = new_version
|
# Support both top-level version and builds[].version
|
||||||
metadata['release'] = 1
|
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
|
# Write updated metadata
|
||||||
with open(metadata_file, 'w') as f:
|
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)
|
metadata = yaml.safe_load(f)
|
||||||
|
|
||||||
package_name = metadata.get('name', package_dir.name)
|
package_name = metadata.get('name', package_dir.name)
|
||||||
current_version = metadata.get('version')
|
|
||||||
github_repo = metadata.get('github')
|
github_repo = metadata.get('github')
|
||||||
claude_ai = metadata.get('claude_ai', False)
|
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")
|
logger.debug(f"Package {package_name} has no GitHub repo or claude_ai configured")
|
||||||
return True
|
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:
|
if not current_version:
|
||||||
logger.warning(f"Package {package_name} has no version in metadata")
|
logger.warning(f"Package {package_name} has no version in metadata")
|
||||||
return False
|
return False
|
||||||
|
|||||||
Reference in New Issue
Block a user