This commit is contained in:
2026-03-20 10:47:58 +01:00
parent f791799105
commit d0c590c185
5 changed files with 81 additions and 9 deletions

View File

@@ -128,7 +128,13 @@ fn run(cli: Cli) -> Result<()> {
// Load repos for reverse-dep checking
let mut all_repo_packages = std::collections::HashMap::new();
for repo in &config.repos {
let repo_pkgs = resolver::DependencyGraph::load_repo(&repo.path)?;
let repo_pkgs = match resolver::DependencyGraph::load_repo(&repo.path) {
Ok(pkgs) => pkgs,
Err(e) => {
eprintln!("Warning: failed to load repo '{}': {}", repo.name, e);
continue;
}
};
all_repo_packages.extend(repo_pkgs);
}
@@ -191,7 +197,13 @@ fn run(cli: Cli) -> Result<()> {
// Load all repos to compare available vs installed versions
let mut all_repo_packages = std::collections::HashMap::new();
for repo in &config.repos {
let repo_pkgs = resolver::DependencyGraph::load_repo(&repo.path)?;
let repo_pkgs = match resolver::DependencyGraph::load_repo(&repo.path) {
Ok(pkgs) => pkgs,
Err(e) => {
eprintln!("Warning: failed to load repo '{}': {}", repo.name, e);
continue;
}
};
all_repo_packages.extend(repo_pkgs);
}
@@ -254,7 +266,13 @@ fn run(cli: Cli) -> Result<()> {
Commands::Search { query } => {
// Search through all repos for matching package names/descriptions
for repo in &config.repos {
let packages = resolver::DependencyGraph::load_repo(&repo.path)?;
let packages = match resolver::DependencyGraph::load_repo(&repo.path) {
Ok(pkgs) => pkgs,
Err(e) => {
eprintln!("Warning: failed to load repo '{}': {}", repo.name, e);
continue;
}
};
for (name, pkg) in &packages {
if name.contains(&query) || pkg.package.description.to_lowercase().contains(&query.to_lowercase()) {
println!(
@@ -398,7 +416,13 @@ fn run(cli: Cli) -> Result<()> {
// Load all repos
let mut all_repo_packages = std::collections::HashMap::new();
for repo in &config.repos {
let repo_pkgs = resolver::DependencyGraph::load_repo(&repo.path)?;
let repo_pkgs = match resolver::DependencyGraph::load_repo(&repo.path) {
Ok(pkgs) => pkgs,
Err(e) => {
eprintln!("Warning: failed to load repo '{}': {}", repo.name, e);
continue;
}
};
all_repo_packages.extend(repo_pkgs);
}

View File

@@ -84,8 +84,21 @@ impl DependencyGraph {
for entry in std::fs::read_dir(repo_dir)
.with_context(|| format!("Failed to read repo: {}", repo_dir.display()))?
{
let entry = entry?;
if !entry.file_type()?.is_dir() {
let entry = match entry {
Ok(e) => e,
Err(e) => {
log::warn!("Skipping unreadable entry in {}: {}", repo_dir.display(), e);
continue;
}
};
let is_dir = match entry.file_type() {
Ok(ft) => ft.is_dir(),
Err(_) => {
// Fallback: try metadata (follows symlinks)
entry.path().is_dir()
}
};
if !is_dir {
continue;
}