tonhowtf/omniget · error · anyhow::Error
release de nao tem um asset para este sistema
Error message
release {} de {} nao tem um asset para este sistema What it means
The release was fetched and has assets, but none matched the `pick` predicate for the current platform — for the Spicetify CLI this means no asset matches the OS/arch suffix produced by `cli_asset_suffix`. The tag and repo are named so the developer knows which release lacked a compatible binary.
Solutions
- Confirm the current OS/arch has an upstream asset (Spicetify publishes linux-amd64, darwin-amd64/arm64, windows-x64)
- On unsupported Linux arch, install spicetify via the system package manager or build from source
- Check the release's asset names on GitHub and update the `pick` predicate to match new naming
- Pin to an older release tag that still ships the needed asset
Example fix
// before
let suffix = cli_asset_suffix()?; // Err on linux aarch64
// after
let suffix = cli_asset_suffix().unwrap_or_else(|_| {
eprintln!("Spicetify CLI binary not available for this arch; install via package manager");
std::process::exit(1);
}); Defensive patterns
Strategy: fallback
Validate before calling
let target = format!("{}-{}", std::env::consts::OS, std::env::consts::ARCH);
eprintln!("looking for asset for {target}; verify upstream publishes one"); Try / catch
match cli_asset_suffix() {
Ok(s) => latest_asset(&client, repo, move |n| n.ends_with(s)).await,
Err(_) => Err(anyhow!("unsupported platform — install via package manager")),
} Prevention
- Check `target_arch`/`target_os` against the upstream release matrix before attempting install
- Keep the `pick` predicate in sync with upstream asset naming conventions
- For unsupported arches, guide users to the system package manager instead of failing silently
When it happens
Trigger: `latest_asset` with a `pick` closure (e.g. `|n| n.ends_with("linux-amd64.tar.gz")`) looping over all asset names without a match — unusual Linux arch (ARM), renamed assets in a new release, or a repo that stopped publishing binaries for this platform.
Common situations: Running on Linux ARM/ARM64 where Spicetify publishes no CLI binary; a new upstream release renamed its assets; a fork used whose assets differ from upstream.
Understand the failure class
Background: 'Could not be found', 'does not exist', 'not found in database': the resource-not-found family when an ID, slug, key, or URI lookup comes back empty — this error's family across 20 libraries.
Related errors
- a Microsoft não publica ONNX Runtime pronto para este…
- dentro do Flatpak o Spicetify nao consegue alterar o…
- FFmpeg installed but failed to execute
- FFmpeg installed but failed to execute
- gallery-dl nao tem binario para este sistema
AI-assisted analysis of tonhowtf/omniget@8600b91f42 (2026-09-12).
Data as JSON: /api/errors/b53736eab45d568b.
Report an issue: GitHub.
Appendix: source
Thrown at src-tauri/omniget-core/src/core/spicetify.rs:409
.as_array()
.ok_or_else(|| anyhow!("release de {} sem assets", repo))?;
for asset in assets {
let name = asset["name"].as_str().unwrap_or("");
if pick(name) {
return Ok(ReleaseAsset {
tag: tag.clone(),
name: name.to_string(),
url: asset["browser_download_url"]
.as_str()
.unwrap_or("")
.to_string(),
digest: asset["digest"]
.as_str()
.and_then(integrity::parse_github_digest),
});
}
}
Err(anyhow!(
"release {} de {} nao tem um asset para este sistema",
tag,
repo
))
}
async fn download_verified(
client: &reqwest::Client,
asset: &ReleaseAsset,
) -> anyhow::Result<Vec<u8>> {
let response = client.get(&asset.url).send().await?;
if !response.status().is_success() {
return Err(anyhow!(
"download de {} falhou: HTTP {}",
asset.name,
response.status()
));
}View on GitHub (pinned to 8600b91f42)