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.