From cccd901aef23a0ff7e9f87a4a57e9074c816a06f Mon Sep 17 00:00:00 2001 From: nsfisis Date: Sat, 6 Jun 2026 02:51:49 +0900 Subject: fix(command): use full pretty version and drop stale phase-b TODOs LicensesCommand now renders the root package version via get_full_pretty_version, matching PHP getFullPrettyVersion, and holds the root package handle directly instead of snapshotting fields. Also align update/mark-alias operations on get_full_pretty_version and remove the now-stale phase-b TODO markers in status and licenses commands. Co-Authored-By: Claude Opus 4.8 --- crates/shirabe/src/command/licenses_command.rs | 42 +++++++++++++++++--------- 1 file changed, 27 insertions(+), 15 deletions(-) (limited to 'crates/shirabe/src/command/licenses_command.rs') diff --git a/crates/shirabe/src/command/licenses_command.rs b/crates/shirabe/src/command/licenses_command.rs index e66267f..d870acb 100644 --- a/crates/shirabe/src/command/licenses_command.rs +++ b/crates/shirabe/src/command/licenses_command.rs @@ -89,10 +89,7 @@ impl LicensesCommand { .borrow_mut() .dispatch(Some(command_event.get_name()), None); - // TODO(phase-b): snapshot root package fields up-front to release the immutable borrow. - let root_name = composer.get_package().get_pretty_name().to_string(); - let root_version = composer.get_package().get_pretty_version().to_string(); - let root_licenses_snap = composer.get_package().get_license().clone(); + let root = composer.get_package(); let packages = if input.get_option("locked").as_bool().unwrap_or(false) { let locker = composer.get_locker().clone(); @@ -105,11 +102,12 @@ impl LicensesCommand { } let no_dev = input.get_option("no-dev").as_bool().unwrap_or(false); let repo = locker.get_locked_repository(!no_dev)?; - ::get_packages(&mut *repo.borrow_mut())? + repo.borrow_mut().get_packages()? } else { let repository_manager = composer.get_repository_manager().clone(); let repository_manager = repository_manager.borrow(); let repo = repository_manager.get_local_repository(); + if input.get_option("no-dev").as_bool().unwrap_or(false) { RepositoryUtils::filter_required_packages( &repo.get_packages()?, @@ -121,11 +119,10 @@ impl LicensesCommand { repo.get_packages()? } }; - let _ = composer.get_package(); - let pkg_pi: Vec = + let packages: Vec = packages.into_iter().map(|p| p.into()).collect(); - let packages = PackageSorter::sort_packages_alphabetically(pkg_pi); + let packages = PackageSorter::sort_packages_alphabetically(packages); let io = self.get_io(); let format = input @@ -135,14 +132,20 @@ impl LicensesCommand { .to_string(); match format.as_str() { "text" => { - let root_licenses = root_licenses_snap.clone(); + let root_licenses = root.get_license(); let licenses_str = if root_licenses.is_empty() { "none".to_string() } else { root_licenses.join(", ") }; - io.write(&format!("Name: {}", root_name)); - io.write(&format!("Version: {}", root_version)); + io.write(&format!( + "Name: {}", + root.get_pretty_name() + )); + io.write(&format!( + "Version: {}", + root.get_full_pretty_version(true, crate::package::DisplayMode::SourceRefIfDev) + )); io.write(&format!("Licenses: {}", licenses_str)); io.write("Dependencies:"); io.write(""); @@ -178,7 +181,7 @@ impl LicensesCommand { table.add_row(PhpMixed::List(vec![ Box::new(PhpMixed::String(name)), Box::new(PhpMixed::String(package.get_full_pretty_version( - false, + true, crate::package::DisplayMode::SourceRefIfDev, ))), Box::new(PhpMixed::String(licenses_str)), @@ -216,12 +219,21 @@ impl LicensesCommand { } let mut output_map: IndexMap = IndexMap::new(); - output_map.insert("name".to_string(), PhpMixed::String(root_name.clone())); + output_map.insert( + "name".to_string(), + PhpMixed::String(root.get_pretty_name().clone()), + ); output_map.insert( "version".to_string(), - PhpMixed::String(root_version.clone()), + PhpMixed::String( + root.get_full_pretty_version( + true, + crate::package::DisplayMode::SourceRefIfDev, + ) + .clone(), + ), ); - let root_licenses = root_licenses_snap.clone(); + let root_licenses = root.get_license(); output_map.insert( "license".to_string(), PhpMixed::List( -- cgit v1.3.1