Merge pull request 'feat: automatically update claude-ai version' (#88) from benvin/claude-ai-versioncheck into master
Reviewed-on: #88
This commit was merged in pull request #88.
This commit is contained in:
@@ -9,6 +9,7 @@ builds:
|
|||||||
release: '1'
|
release: '1'
|
||||||
repository: [almalinux/el9]
|
repository: [almalinux/el9]
|
||||||
version: 2.1.120
|
version: 2.1.120
|
||||||
|
claude_ai: true
|
||||||
description: Claude Code - Anthropic's agentic AI coding tool
|
description: Claude Code - Anthropic's agentic AI coding tool
|
||||||
homepage: https://claude.ai/code
|
homepage: https://claude.ai/code
|
||||||
license: Proprietary
|
license: Proprietary
|
||||||
|
|||||||
+45
-14
@@ -154,6 +154,33 @@ def load_env_vars(env_file: Path) -> Dict[str, str]:
|
|||||||
return env_vars
|
return env_vars
|
||||||
|
|
||||||
|
|
||||||
|
def get_claude_ai_latest_version() -> Optional[str]:
|
||||||
|
"""
|
||||||
|
Get the latest claude-code version from downloads.claude.ai.
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
Latest version string or None if not found
|
||||||
|
"""
|
||||||
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
try:
|
||||||
|
url = "https://downloads.claude.ai/claude-code-releases/latest"
|
||||||
|
logger.debug(f"Checking claude-code latest version: {url}")
|
||||||
|
response = requests.get(url, timeout=30)
|
||||||
|
|
||||||
|
if response.status_code == 200:
|
||||||
|
version = response.text.strip()
|
||||||
|
logger.debug(f"Latest claude-code version: {version}")
|
||||||
|
return version
|
||||||
|
else:
|
||||||
|
logger.warning(f"Unexpected response from claude.ai: {response.status_code}")
|
||||||
|
return None
|
||||||
|
|
||||||
|
except requests.RequestException as e:
|
||||||
|
logger.error(f"Failed to check claude-code version: {e}")
|
||||||
|
return None
|
||||||
|
|
||||||
|
|
||||||
def get_github_latest_release(repo: str) -> Optional[Dict]:
|
def get_github_latest_release(repo: str) -> Optional[Dict]:
|
||||||
"""
|
"""
|
||||||
Get the latest release from GitHub API.
|
Get the latest release from GitHub API.
|
||||||
@@ -315,26 +342,30 @@ def check_package_updates(package_dir: Path, dry_run: bool = False) -> bool:
|
|||||||
package_name = metadata.get('name', package_dir.name)
|
package_name = metadata.get('name', package_dir.name)
|
||||||
current_version = metadata.get('version')
|
current_version = metadata.get('version')
|
||||||
github_repo = metadata.get('github')
|
github_repo = metadata.get('github')
|
||||||
|
claude_ai = metadata.get('claude_ai', False)
|
||||||
|
|
||||||
if not github_repo:
|
if not github_repo and not claude_ai:
|
||||||
logger.debug(f"Package {package_name} has no GitHub repo configured")
|
logger.debug(f"Package {package_name} has no GitHub repo or claude_ai configured")
|
||||||
return True
|
return True
|
||||||
|
|
||||||
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
|
||||||
|
|
||||||
logger.info(f"Checking {package_name} (current: {current_version}) from {github_repo}")
|
if claude_ai:
|
||||||
|
logger.info(f"Checking {package_name} (current: {current_version}) from downloads.claude.ai")
|
||||||
# Get latest release from GitHub
|
latest_version = get_claude_ai_latest_version()
|
||||||
latest_release = get_github_latest_release(github_repo)
|
if not latest_version:
|
||||||
if not latest_release:
|
return False
|
||||||
return False
|
else:
|
||||||
|
logger.info(f"Checking {package_name} (current: {current_version}) from {github_repo}")
|
||||||
latest_version = normalize_version(latest_release.get('tag_name', ''))
|
latest_release = get_github_latest_release(github_repo)
|
||||||
if not latest_version:
|
if not latest_release:
|
||||||
logger.warning(f"Could not determine latest version for {package_name}")
|
return False
|
||||||
return False
|
latest_version = normalize_version(latest_release.get('tag_name', ''))
|
||||||
|
if not latest_version:
|
||||||
|
logger.warning(f"Could not determine latest version for {package_name}")
|
||||||
|
return False
|
||||||
|
|
||||||
# Compare versions
|
# Compare versions
|
||||||
if compare_versions(current_version, latest_version):
|
if compare_versions(current_version, latest_version):
|
||||||
@@ -373,7 +404,7 @@ def find_packages_with_github(rpms_dir: Path) -> List[Path]:
|
|||||||
with open(metadata_file, 'r') as f:
|
with open(metadata_file, 'r') as f:
|
||||||
metadata = yaml.safe_load(f)
|
metadata = yaml.safe_load(f)
|
||||||
|
|
||||||
if metadata.get('github'):
|
if metadata.get('github') or metadata.get('claude_ai'):
|
||||||
github_packages.append(package_dir)
|
github_packages.append(package_dir)
|
||||||
except Exception:
|
except Exception:
|
||||||
continue
|
continue
|
||||||
|
|||||||
Reference in New Issue
Block a user