diff options
| author | nsfisis <nsfisis@gmail.com> | 2026-06-29 04:29:57 +0900 |
|---|---|---|
| committer | nsfisis <nsfisis@gmail.com> | 2026-06-29 04:29:57 +0900 |
| commit | 2ae0382e5592dfc3293113d726f9a1d9f4aa9923 (patch) | |
| tree | 1925d85bdc0e32755a3d7b3e193da8afc3cba9b5 /crates/shirabe/src/command/audit_command.rs | |
| parent | f33487739aa9af2f40df678db2e418788a66e634 (diff) | |
| download | php-shirabe-2ae0382e5592dfc3293113d726f9a1d9f4aa9923.tar.gz php-shirabe-2ae0382e5592dfc3293113d726f9a1d9f4aa9923.tar.zst php-shirabe-2ae0382e5592dfc3293113d726f9a1d9f4aa9923.zip | |
feat(audit): implement get_packages non-locked branch
Port AuditCommand::getPackages's non-locked path: build an
InstalledRepository from the local repository and return its packages,
filtered by RootPackage requires when --no-dev is set. The prior
TODO(phase-c) assumption (InstalledRepository::new vs get_local_repository
type mismatch) no longer holds since both sides use RepositoryInterfaceHandle.
Enables the two previously ignored audit command tests.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Diffstat (limited to 'crates/shirabe/src/command/audit_command.rs')
| -rw-r--r-- | crates/shirabe/src/command/audit_command.rs | 30 |
1 files changed, 24 insertions, 6 deletions
diff --git a/crates/shirabe/src/command/audit_command.rs b/crates/shirabe/src/command/audit_command.rs index d8666bb..236ecdc 100644 --- a/crates/shirabe/src/command/audit_command.rs +++ b/crates/shirabe/src/command/audit_command.rs @@ -9,6 +9,8 @@ use crate::composer::PartialComposerHandle; use crate::console::input::InputOption; use crate::io::IOInterfaceImmutable; use crate::repository::CanonicalPackagesTrait; +use crate::repository::InstalledRepository; +use crate::repository::RepositoryInterface; use crate::repository::RepositorySet; use crate::repository::RepositoryUtils; use shirabe_external_packages::symfony::console::command::command::Command; @@ -268,11 +270,27 @@ impl AuditCommand { return locked_repo.borrow_mut().get_canonical_packages(); } - let _root_pkg = composer.get_package(); - // TODO(phase-c): InstalledRepository::new expects Vec<Box<dyn RepositoryInterface>>, but - // get_local_repository returns &dyn InstalledRepositoryInterface. Conversion requires - // either cloning into a Box or restructuring InstalledRepository constructor. - let _ = RepositoryUtils::filter_required_packages; - todo!("audit get_packages non-locked branch needs installed-repo conversion") + let root_pkg = composer.get_package(); + let local_repo = composer + .get_repository_manager() + .borrow() + .get_local_repository(); + let mut installed_repo = InstalledRepository::new(vec![local_repo]); + + if input + .borrow() + .get_option("no-dev")? + .as_bool() + .unwrap_or(false) + { + return Ok(RepositoryUtils::filter_required_packages( + &installed_repo.get_packages()?, + root_pkg.clone().into(), + false, + vec![], + )); + } + + installed_repo.get_packages() } } |
