From 2ae0382e5592dfc3293113d726f9a1d9f4aa9923 Mon Sep 17 00:00:00 2001 From: nsfisis Date: Mon, 29 Jun 2026 04:29:57 +0900 Subject: 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) --- crates/shirabe/src/command/audit_command.rs | 30 +++++++++++++++++++++++------ 1 file changed, 24 insertions(+), 6 deletions(-) (limited to 'crates/shirabe/src/command/audit_command.rs') 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>, 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() } } -- cgit v1.3.1