{"record":{"id":"44ec7cb8e125e99f","repo":"tonhowtf/omniget","slug":"escolha-ao-menos-uma-pasta-de-capturas","errorCode":null,"errorMessage":"escolha ao menos uma pasta de capturas","messagePattern":"escolha ao menos uma pasta de capturas","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"src-tauri/omniget-core/src/core/tools/games/clip_organizer.rs","lineNumber":314,"sourceCode":"    }\n    out.sort_by(|a, b| a.1.taken.cmp(&b.1.taken).then_with(|| a.0.cmp(&b.0)));\n    out\n}\n\npub async fn run(opts: ClipOptions, progress: ProgressFn) -> anyhow::Result<ClipResult> {\n    let mut dirs: Vec<PathBuf> = opts\n        .dirs\n        .iter()\n        .map(|d| PathBuf::from(d.trim()))\n        .filter(|d| d.is_dir())\n        .collect();\n    if opts.include_steam {\n        dirs.extend(steam::screenshot_dirs());\n    }\n    dirs.sort();\n    dirs.dedup();\n    if dirs.is_empty() {\n        anyhow::bail!(\"escolha ao menos uma pasta de capturas\");\n    }\n\n    let apps = steam::scan_apps(&steam::steam_libraries(&opts.steam_dirs));\n    let fallback = if opts.fallback_game.trim().is_empty() {\n        \"Outros\".to_string()\n    } else {\n        opts.fallback_game.trim().to_string()\n    };\n\n    let organizing = opts.mode == \"copy\" || opts.mode == \"move\";\n    let dest_root = PathBuf::from(opts.dest.trim());\n    if organizing && opts.dest.trim().is_empty() {\n        anyhow::bail!(\"escolha a pasta de destino para organizar\");\n    }\n    let move_it = opts.mode == \"move\";\n\n    report(&progress, ID, \"progress\", 0, None, None);\n    let found = collect(&dirs);","sourceCodeStart":296,"sourceCodeEnd":332,"githubUrl":"https://github.com/tonhowtf/omniget/blob/8600b91f4246848bac346874daa9e61c1fc5677a/src-tauri/omniget-core/src/core/tools/games/clip_organizer.rs#L296-L332","documentation":"Input validation in clip_organizer run: after filtering the configured dirs for existing directories and optionally adding Steam screenshot folders, the list is empty — the tool has nowhere to look for captures and refuses to proceed.","triggerScenarios":"Thrown at src-tauri/omniget-core/src/core/tools/games/clip_organizer.rs:314 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Select at least one existing folder containing game screenshots","Enable include_steam so built-in Steam screenshot dirs are scanned","Fix typo'd or moved folder paths in the options"],"exampleFix":null,"handlingStrategy":"validation","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"8600b91f4246848bac346874daa9e61c1fc5677a","analyzedAt":"2026-09-12T14:29:19.317Z","contentChangedAt":"2026-09-12T14:29:19.317Z","schemaVersion":2},"datasetVersion":"2026-09-23T08:17:48.524Z"}