diff options
author | Lars Wirzenius <liw@sequoia-pgp.org> | 2022-09-22 08:36:56 +0300 |
---|---|---|
committer | Lars Wirzenius <liw@sequoia-pgp.org> | 2022-09-22 08:36:56 +0300 |
commit | edca1d46f615c52129d1ec6e2fc8b9236197d4cb (patch) | |
tree | aefb0ccf12e060b839bb68268f64e8a6ed4090c5 | |
parent | 0a90b202704226c3cb749ad24be49dedc750fdf4 (diff) | |
download | missing-dependencies-edca1d46f615c52129d1ec6e2fc8b9236197d4cb.tar.gz |
output separate lists of problems
Sponsored-by: pep.foundation
-rw-r--r-- | src/main.rs | 32 |
1 files changed, 29 insertions, 3 deletions
diff --git a/src/main.rs b/src/main.rs index e1976f2..e904bd0 100644 --- a/src/main.rs +++ b/src/main.rs @@ -40,7 +40,9 @@ fn fallible_main() -> anyhow::Result<()> { let mut dependencies: HashMap<String, VersionReq> = HashMap::new(); for package in metadata.packages { for dep in &package.dependencies { - if dep.target.is_none() && matches!(dep.kind, DependencyKind::Build | DependencyKind::Normal) { + if dep.target.is_none() + && matches!(dep.kind, DependencyKind::Build | DependencyKind::Normal) + { trace!("package {} platform {:?}", package.name, dep.target); let name = canonicalize_crate_name(&dep.name); trace!("dependency on {} {}", name, dep.req); @@ -86,9 +88,33 @@ fn fallible_main() -> anyhow::Result<()> { Problem::MissingCrate(name, _) => name.clone(), Problem::MissingVersion(name, _, _) => name.clone(), }); - for p in problems.iter() { - println!("{}", p); + + let versions: Vec<&Problem> = problems + .iter() + .filter(|p| matches!(p, Problem::MissingVersion(_, _, _))) + .collect(); + if !versions.is_empty() { + println!("crates with required version missing:"); + for v in versions { + if let Problem::MissingVersion(name, req, got) = v { + println!(" {} {} (require {})", name, got, req); + } + } + } + + let crates: Vec<&Problem> = problems + .iter() + .filter(|p| matches!(p, Problem::MissingCrate(__, _))) + .collect(); + if !crates.is_empty() { + println!("crates missing entirely:"); + for c in crates { + if let Problem::MissingCrate(name, req) = c { + println!(" {} {}", name, req); + } + } } + Err(anyhow!( "there were {} missing dependencies", problems.len() |