Created
January 29, 2026 05:32
-
-
Save ink-splatters/de356f10fd0348484f3228bc388e204c to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| #!/usr/bin/env -S uv run --script | |
| # /// script | |
| # dependencies = ["requests"] | |
| # /// | |
| import dataclasses as d | |
| import json | |
| import logging | |
| import re | |
| import sys | |
| import requests | |
| logging.basicConfig(stream=sys.stderr, level=logging.INFO) | |
| logger = logging.getLogger("fetch-meta") | |
| gcs_bucket = "https://storage.googleapis.com/claude-code-dist-86c565f3-f756-42ad-8dfa-d59b1c096819/claude-code-releases" | |
| _version_re = re.compile(r"^\d+\.\d+\.\d+$") | |
| @d.dataclass(frozen=True, slots=True) | |
| class PlatformEntry: | |
| checksum: d.InitVar[str] | |
| size: int | |
| url: str = "" | |
| sha256: str = d.field(init=False) | |
| def __post_init__(self, checksum: str) -> None: | |
| object.__setattr__(self, "sha256", checksum) | |
| @d.dataclass(frozen=True, slots=True) | |
| class Manifest: | |
| version: str | |
| build_date: str | |
| platforms: dict[str, PlatformEntry] | |
| def fetch_latest_version() -> str: | |
| url = f"{gcs_bucket}/latest" | |
| logger.debug(f"fetching latest version from {url}") | |
| r = requests.get(url) | |
| r.raise_for_status() | |
| version = r.text.strip() | |
| if not _version_re.match(version): | |
| raise ValueError(f"invalid version format: {version!r}") | |
| logger.debug(f"latest version: {version}") | |
| return version | |
| def manifest_with_urls() -> Manifest: | |
| version = fetch_latest_version() | |
| url = f"{gcs_bucket}/{version}/manifest.json" | |
| logger.debug(f"fetching manifest from {url}") | |
| r = requests.get(url) | |
| r.raise_for_status() | |
| data: dict = r.json() | |
| logger.debug(f"raw manifest: {data}") | |
| platforms = { | |
| platform.replace("-x64", "-x86_64"): PlatformEntry( | |
| url=f"{gcs_bucket}/{version}/{platform}/claude", | |
| **entry, | |
| ) | |
| for platform, entry in data["platforms"].items() | |
| } | |
| return Manifest( | |
| version=data["version"], | |
| build_date=data["buildDate"], | |
| platforms=platforms, | |
| ) | |
| if __name__ == "__main__": | |
| try: | |
| logger.info("Getting meta info...") | |
| manifest = manifest_with_urls() | |
| print(json.dumps(d.asdict(manifest), indent=2)) | |
| except Exception as e: | |
| logger.error(str(e)) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment