diff options
| author | nsfisis <nsfisis@gmail.com> | 2026-06-06 02:51:49 +0900 |
|---|---|---|
| committer | nsfisis <nsfisis@gmail.com> | 2026-06-06 02:51:49 +0900 |
| commit | cccd901aef23a0ff7e9f87a4a57e9074c816a06f (patch) | |
| tree | 3929a3f165419d43e69154fdf173771fbcbb5fad /crates/shirabe/src/command | |
| parent | ad78317ecf8ffadae3088452b6b52e2d476fadeb (diff) | |
| download | php-shirabe-cccd901aef23a0ff7e9f87a4a57e9074c816a06f.tar.gz php-shirabe-cccd901aef23a0ff7e9f87a4a57e9074c816a06f.tar.zst php-shirabe-cccd901aef23a0ff7e9f87a4a57e9074c816a06f.zip | |
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 <noreply@anthropic.com>
Diffstat (limited to 'crates/shirabe/src/command')
| -rw-r--r-- | crates/shirabe/src/command/licenses_command.rs | 42 | ||||
| -rw-r--r-- | crates/shirabe/src/command/status_command.rs | 1 |
2 files changed, 27 insertions, 16 deletions
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)?; - <crate::repository::LockArrayRepository as crate::repository::RepositoryInterface>::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<crate::package::PackageInterfaceHandle> = + let packages: Vec<crate::package::PackageInterfaceHandle> = 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: <comment>{}</comment>", root_name)); - io.write(&format!("Version: <comment>{}</comment>", root_version)); + io.write(&format!( + "Name: <comment>{}</comment>", + root.get_pretty_name() + )); + io.write(&format!( + "Version: <comment>{}</comment>", + root.get_full_pretty_version(true, crate::package::DisplayMode::SourceRefIfDev) + )); io.write(&format!("Licenses: <comment>{}</comment>", licenses_str)); io.write("Dependencies:"); io.write(""); @@ -178,7 +181,7 @@ impl LicensesCommand { table.add_row(PhpMixed::List(vec