{"record":{"id":"dfbbc87549e14924","repo":"tonhowtf/omniget","slug":"nao-esta-listado-em","errorCode":null,"errorMessage":"{} nao esta listado em {}","messagePattern":"(.+?) nao esta listado em (.+?)","errorType":"validation","errorClass":"anyhow::Error","httpStatus":null,"severity":"error","filePath":"src-tauri/omniget-core/src/core/dependencies.rs","lineNumber":104,"sourceCode":"        let response = client\n            .get(sums_url)\n            .send()\n            .await\n            .map_err(|e| anyhow!(\"nao foi possivel buscar {}: {}\", sums_url, e))?;\n        if !response.status().is_success() {\n            return Err(anyhow!(\n                \"nao foi possivel buscar {}: HTTP {}\",\n                sums_url,\n                response.status()\n            ));\n        }\n        let text = response\n            .text()\n            .await\n            .map_err(|e| anyhow!(\"corpo ilegivel de {}: {}\", sums_url, e))?;\n        parse_sha256sums(&text, asset)\n            .or_else(|| parse_single_sha256(&text))\n            .ok_or_else(|| anyhow!(\"{} nao esta listado em {}\", asset, sums_url))\n    }\n}\n\npub fn bin_name(tool: &str) -> String {\n    if cfg!(target_os = \"windows\") {\n        format!(\"{}.exe\", tool)\n    } else {\n        tool.to_string()\n    }\n}\n\n/// Traduz o nome interno da ferramenta para o nome que a UI e o arquivo de\n/// overrides usam. `find_tool` recebe \"ffmpeg\"; a tabela mostra \"FFmpeg\".\nfn override_name(tool: &str) -> &str {\n    match tool {\n        \"ffmpeg\" => \"FFmpeg\",\n        \"yt-dlp\" => \"yt-dlp\",\n        other => other,","sourceCodeStart":86,"sourceCodeEnd":122,"githubUrl":"https://github.com/tonhowtf/omniget/blob/8600b91f4246848bac346874daa9e61c1fc5677a/src-tauri/omniget-core/src/core/dependencies.rs#L86-L122","documentation":"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.","triggerScenarios":"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).","commonSituations":"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.","solutions":["Download the sums file and grep for the asset name to confirm the exact expected spelling.","Update the asset name construction (check bin_name/platform/arch handling) to match the upstream filename.","Point sums_url at the manifest for the same release version as the asset.","If the artifact was removed upstream, bump to a release that still publishes it."],"exampleFix":"// before\nlet asset = \"ffmpeg\";\n// after (match upstream naming incl. extension/platform)\nlet asset = dependencies::bin_name(\"ffmpeg\"); // \"ffmpeg.exe\" on Windows","handlingStrategy":"validation","validationCode":"// Before fetching, confirm the manifest actually lists the asset (do it after fetch as a guard)\nfn manifest_lists(text: &str, asset: &str) -> bool {\n    text.lines().any(|l| l.split_whitespace().nth(1).map_or(false, |f| f.trim_start_matches(\"*\") == asset))\n}","typeGuard":null,"tryCatchPattern":"match expected_from_sums_url(&client, &sums_url, &asset).await {\n    Ok(h) => h,\n    Err(e) if format!(\"{e}\").contains(\"nao esta listado\") => {\n        log::error!(\"asset {asset} missing from manifest; check upstream naming\");\n        Err(e)\n    }\n    Err(e) => Err(e),\n}","preventionTips":["Derive asset names from a single source (bin_name + platform/arch) rather than hardcoding strings.","Keep sums_url version in lockstep with the asset version.","Test asset-name construction against real upstream manifests in CI."],"tags":["parsing","checksum","rust","not-found"],"backgroundTag":"resource-not-found","analyzedSha":"8600b91f4246848bac346874daa9e61c1fc5677a","analyzedAt":"2026-09-12T14:29:19.317Z","contentChangedAt":"2026-09-12T14:29:19.317Z","schemaVersion":2},"datasetVersion":"2026-09-15T23:17:13.987Z"}