{"record":{"id":"6dc6d703750938a6","repo":"Morganamilo/paru","slug":"too-many-packages","errorCode":null,"errorMessage":"too many packages","messagePattern":"too many packages","errorType":"validation","errorClass":"anyhow::Error","httpStatus":null,"severity":"error","filePath":"src/search.rs","lineNumber":187,"sourceCode":"    let url = config.aur_url.join(\"packages.gz\")?;\n    let resp = get(url.clone())\n        .await\n        .with_context(|| format!(\"get {}\", url))?;\n    let success = resp.status().is_success();\n    ensure!(success, \"get {}: {}\", url, resp.status());\n\n    let data = resp.bytes().await?;\n    let decoder = GzDecoder::new(&*data);\n    let data =\n        std::io::read_to_string(decoder).with_context(|| tr!(\"failed to decode package list\"))?;\n\n    let regex = RegexSet::new(targets)?;\n\n    let pkgs = data\n        .lines()\n        .filter(|pkg| regex.is_match(pkg))\n        .collect::<Vec<_>>();\n    ensure!(pkgs.len() < 2000, \"too many packages\");\n    let pkgs = config.raur.info(&pkgs).await?;\n    Ok(pkgs)\n}\n\nasync fn search_aur(config: &Config, targets: &[String]) -> Result<Vec<raur::Package>> {\n    if targets.is_empty() || !config.mode.aur() {\n        return Ok(Vec::new());\n    }\n\n    let mut matches = if config.args.has_arg(\"x\", \"regex\") {\n        search_aur_regex(config, targets).await?\n    } else {\n        let mut targets = targets.iter().map(|t| t.to_lowercase()).collect::<Vec<_>>();\n        targets.sort_by_key(|t| t.len());\n\n        let mut matches = Vec::new();\n\n        let by = config.search_by;","sourceCodeStart":169,"sourceCodeEnd":205,"githubUrl":"https://github.com/Morganamilo/paru/blob/9ac3578807a87858651e81a02586ceb947686e7c/src/search.rs#L169-L205","documentation":"After filtering the AUR package list by regex set, search_aur_regex asserts that fewer than 2000 packages matched before querying raur for their info. More than 2000 matches would create an enormous info request, so it is rejected with 'too many packages'.","triggerScenarios":"A search pattern (or empty/overly-broad regex) that matches ≥2000 names in the AUR packages list, e.g. paru -Ss 'a' or a regex like '.*' routed through search_aur_regex.","commonSituations":"Searching a single common character or short substring; regex metacharacter typos making the pattern match everything.","solutions":["Use a more specific search term to reduce matches below 2000","Quote regex special characters or escape them in your pattern","Use a non-regex simple search or narrow by category/version if available"],"exampleFix":"// before\nparu -Ss 'k'\n// after\nparu -Ss 'kdeconnect'","handlingStrategy":"validation","validationCode":"// rough client-side guard: avoid overly broad search terms\nif pattern.chars().count() < 3 && !pattern.contains('*') {\n    eprintln!(\"search term too broad, may exceed 2000 matches\");\n}","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Search with specific package names or multi-character terms","Escape regex metacharacters to avoid match-everything patterns","Prefer simple -Ss searches over broad regexes"],"tags":["search","aur","limits","regex"],"backgroundTag":"value-out-of-range","analyzedSha":"9ac3578807a87858651e81a02586ceb947686e7c","analyzedAt":"2026-09-12T04:57:59.861Z","contentChangedAt":"2026-09-12T04:57:59.861Z","schemaVersion":2},"datasetVersion":"2026-09-16T09:17:16.951Z"}