tonhowtf/omniget · error · anyhow::Error

nao esta listado em

Error message

{} nao esta listado em {}

What it means

Thrown by expected_from_sums_url when the fetched sha256sums text was read fine but neither parse_sha256sums nor parse_single_sha256 finds an entry for the requested asset. The manifest is valid but does not contain a line for this file name.

Solutions

  1. Download the sums file and grep for the asset name to confirm the exact expected spelling.
  2. Update the asset name construction (check bin_name/platform/arch handling) to match the upstream filename.
  3. Point sums_url at the manifest for the same release version as the asset.
  4. If the artifact was removed upstream, bump to a release that still publishes it.

Example fix

// before
let asset = "ffmpeg";
// after (match upstream naming incl. extension/platform)
let asset = dependencies::bin_name("ffmpeg"); // "ffmpeg.exe" on Windows
Defensive patterns

Strategy: validation

Validate before calling

// Before fetching, confirm the manifest actually lists the asset (do it after fetch as a guard)
fn manifest_lists(text: &str, asset: &str) -> bool {
    text.lines().any(|l| l.split_whitespace().nth(1).map_or(false, |f| f.trim_start_matches("*") == asset))
}

Try / catch

match expected_from_sums_url(&client, &sums_url, &asset).await {
    Ok(h) => h,
    Err(e) if format!("{e}").contains("nao esta listado") => {
        log::error!("asset {asset} missing from manifest; check upstream naming");
        Err(e)
    }
    Err(e) => Err(e),
}

Prevention

When it happens

Trigger: expected_from_sums_url(&client, &sums_url, asset) where the asset string does not match any filename listed in the sums file: asset renamed upstream, version mismatch between the manifest URL and the requested asset, or platform-specific filename differences (e.g. .exe suffix, arch in name).

Common situations: Upstream renamed release artifacts; app pinned to a manifest for a different release; requesting a build variant (musl/arm64) not published upstream; Windows target needing 'tool.exe' but manifest lists bare name.

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


AI-assisted analysis of tonhowtf/omniget@8600b91f42 (2026-09-12). Data as JSON: /api/errors/dfbbc87549e14924. Report an issue: GitHub.

Appendix: source

Thrown at src-tauri/omniget-core/src/core/dependencies.rs:104

        let response = client
            .get(sums_url)
            .send()
            .await
            .map_err(|e| anyhow!("nao foi possivel buscar {}: {}", sums_url, e))?;
        if !response.status().is_success() {
            return Err(anyhow!(
                "nao foi possivel buscar {}: HTTP {}",
                sums_url,
                response.status()
            ));
        }
        let text = response
            .text()
            .await
            .map_err(|e| anyhow!("corpo ilegivel de {}: {}", sums_url, e))?;
        parse_sha256sums(&text, asset)
            .or_else(|| parse_single_sha256(&text))
            .ok_or_else(|| anyhow!("{} nao esta listado em {}", asset, sums_url))
    }
}

pub fn bin_name(tool: &str) -> String {
    if cfg!(target_os = "windows") {
        format!("{}.exe", tool)
    } else {
        tool.to_string()
    }
}

/// Traduz o nome interno da ferramenta para o nome que a UI e o arquivo de
/// overrides usam. `find_tool` recebe "ffmpeg"; a tabela mostra "FFmpeg".
fn override_name(tool: &str) -> &str {
    match tool {
        "ffmpeg" => "FFmpeg",
        "yt-dlp" => "yt-dlp",
        other => other,

View on GitHub (pinned to 8600b91f42)