summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLars Wirzenius <liw@sequoia-pgp.org>2022-09-22 08:36:56 +0300
committerLars Wirzenius <liw@sequoia-pgp.org>2022-09-22 08:36:56 +0300
commitedca1d46f615c52129d1ec6e2fc8b9236197d4cb (patch)
treeaefb0ccf12e060b839bb68268f64e8a6ed4090c5
parent0a90b202704226c3cb749ad24be49dedc750fdf4 (diff)
downloadmissing-dependencies-edca1d46f615c52129d1ec6e2fc8b9236197d4cb.tar.gz
output separate lists of problems
Sponsored-by: pep.foundation
-rw-r--r--src/main.rs32
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()