From f0192390ae1d89981f59395307e885a595f86eef Mon Sep 17 00:00:00 2001 From: nsfisis Date: Sat, 9 May 2026 02:29:35 +0900 Subject: refactor(update): Slice A — align update.rs with Composer's UpdateCommand pipeline MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Rename ChangeKind::Remove → Uninstall, drop Unchanged variant (propagate to remove.rs / require.rs); mirrors Composer's UninstallOperation naming - Fix magic-keyword mirrors detection: use Composer's count-diff semantic (any keyword triggers mirrors mode) instead of all-are-magic; mutex check now fires correctly for mixed lists like `update foo lock` - Add --patch-only pre-solve lock-presence check (previously missing; Composer throws InvalidArgumentException when no lock exists) - Add --patch-only pre-solve constraint injection: inject >=M.N.P.0, tags - Update --no-suggest deprecation wording to match Composer 3 message Co-Authored-By: Claude Sonnet 4.6 --- crates/mozart/src/commands/remove.rs | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) (limited to 'crates/mozart/src/commands/remove.rs') diff --git a/crates/mozart/src/commands/remove.rs b/crates/mozart/src/commands/remove.rs index 2941867..f2a841c 100644 --- a/crates/mozart/src/commands/remove.rs +++ b/crates/mozart/src/commands/remove.rs @@ -375,7 +375,7 @@ pub async fn execute( .collect(); let removals: Vec<_> = changes .iter() - .filter(|c| matches!(c.kind, super::update::ChangeKind::Remove { .. })) + .filter(|c| matches!(c.kind, super::update::ChangeKind::Uninstall { .. })) .collect(); console.info(&console_format!( @@ -390,7 +390,7 @@ pub async fn execute( for change in &changes { match &change.kind { - super::update::ChangeKind::Remove { old_version } => { + super::update::ChangeKind::Uninstall { old_version } => { if args.dry_run { console.info(&format!( " - Would remove {} ({})", @@ -432,7 +432,6 @@ pub async fn execute( )); } } - super::update::ChangeKind::Unchanged => {} } } @@ -861,7 +860,7 @@ mod tests { assert!(composer.require.contains_key("psr/log")); } - /// After re-resolve, removed packages appear as `ChangeKind::Remove` in the change report. + /// After re-resolve, removed packages appear as `ChangeKind::Uninstall` in the change report. #[test] fn test_remove_change_report_shows_removals() { let old_lock = minimal_lock(vec![ @@ -878,10 +877,10 @@ mod tests { assert!( matches!( &changes[0].kind, - super::super::update::ChangeKind::Remove { old_version } + super::super::update::ChangeKind::Uninstall { old_version } if old_version == "3.8.0" ), - "monolog/monolog should appear as a Remove change" + "monolog/monolog should appear as an Uninstall change" ); } -- cgit v1.3.1