From bb132ac9201b958f9f6b916e701d9bfb323166b9 Mon Sep 17 00:00:00 2001 From: nsfisis Date: Mon, 23 Feb 2026 01:34:16 +0900 Subject: fix(prohibits): align behavior with Composer's why-not command - Use installed packages by default instead of always preferring lock file - Error on unknown needle package instead of misleading "can be installed" - Return exit code 1 when prohibitors are found - Deduplicate output rows in dependency table - Print resolution hint suggesting require/update --dry-run Co-Authored-By: Claude Opus 4.6 --- crates/mozart/src/commands/dependency.rs | 8 ++++++ crates/mozart/src/commands/prohibits.rs | 48 ++++++++++++++++++++++++++++++-- 2 files changed, 54 insertions(+), 2 deletions(-) diff --git a/crates/mozart/src/commands/dependency.rs b/crates/mozart/src/commands/dependency.rs index f2856d9..0184f53 100644 --- a/crates/mozart/src/commands/dependency.rs +++ b/crates/mozart/src/commands/dependency.rs @@ -542,7 +542,15 @@ pub fn print_table(results: &[DependencyResult]) { .max() .unwrap_or(0); + let mut seen: HashSet = HashSet::new(); for r in results { + let key = format!( + "{}|{}|{}|{}", + r.package_name, r.package_version, r.link_description, r.link_constraint + ); + if !seen.insert(key) { + continue; + } println!( "{: