From f030dc63ea84a13f1e494a1541b6120c0969f383 Mon Sep 17 00:00:00 2001 From: nsfisis Date: Sat, 21 Feb 2026 11:04:06 +0900 Subject: feat(install): implement install command with lock-based package installation Replaces the todo!() stub with a full implementation that reads composer.lock, computes install/update/skip/remove operations by comparing against vendor/composer/installed.json, downloads packages via the downloader module, and writes the updated installed registry. Handles edge cases: missing lock file, stale lock file, no dist info, empty packages, --dry-run, --no-dev, deprecated flags, and vendor directory cleanup after removals. Co-Authored-By: Claude Opus 4.6 --- crates/mozart/src/constraint.rs | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'crates/mozart/src/constraint.rs') diff --git a/crates/mozart/src/constraint.rs b/crates/mozart/src/constraint.rs index ff9b14e..d009028 100644 --- a/crates/mozart/src/constraint.rs +++ b/crates/mozart/src/constraint.rs @@ -235,7 +235,10 @@ fn normalize_pre_release(s: &str) -> String { .to_string(); // Extract the alphabetic prefix (stability name) - let alpha: String = normalized.chars().take_while(|c| c.is_alphabetic()).collect(); + let alpha: String = normalized + .chars() + .take_while(|c| c.is_alphabetic()) + .collect(); // Extract only digits from the rest (strip separators like dots) let num: String = normalized .chars() -- cgit v1.3.1