Skip to main content

fetch

Function fetch 

Source
pub async fn fetch(
    client: &Client,
    base_url: &str,
    owner: &str,
    repo: &str,
    release_tag: &str,
    expected_version: &str,
) -> Result<ReleaseManifest, ReleaseManifestError>
Expand description

Fetch and validate the release manifest for release_tag (the GitHub tag name, e.g. v2026.8.0) from {base_url}/repos/{owner}/{repo}.

Mirrors the asset-download shape crates/cli/src/cmd/upgrade.rs already uses for the CLI’s own self-update path: GET /repos/{owner}/{repo}/releases/tags/{tag}, find the release-images.yaml asset, then GET its API asset URL with Accept: application/octet-stream (the GitHub API’s download-bytes contract for a release asset).

§Errors

Returns ReleaseManifestError::Http if the release lookup or asset download fails in transport or returns a non-success status, ReleaseManifestError::AssetMissing if the release carries no release-images.yaml asset, or any parse_and_validate validation error.