diff options
| author | nsfisis <nsfisis@gmail.com> | 2026-06-10 02:49:06 +0900 |
|---|---|---|
| committer | nsfisis <nsfisis@gmail.com> | 2026-06-10 02:49:28 +0900 |
| commit | 5d3232a80be4b989e89cc7ae4e3642cc5acae030 (patch) | |
| tree | 06597252809c209e69400e57494b3376158ce0f9 /crates/shirabe/src/repository/array_repository.rs | |
| parent | 2d474e91e49c7343d28198eff2b5bbbed9afbcee (diff) | |
| download | php-shirabe-5d3232a80be4b989e89cc7ae4e3642cc5acae030.tar.gz php-shirabe-5d3232a80be4b989e89cc7ae4e3642cc5acae030.tar.zst php-shirabe-5d3232a80be4b989e89cc7ae4e3642cc5acae030.zip | |
feat(repository): resolve repository phase-b TODOs
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Diffstat (limited to 'crates/shirabe/src/repository/array_repository.rs')
| -rw-r--r-- | crates/shirabe/src/repository/array_repository.rs | 21 |
1 files changed, 14 insertions, 7 deletions
diff --git a/crates/shirabe/src/repository/array_repository.rs b/crates/shirabe/src/repository/array_repository.rs index 1bee17b..b7d862d 100644 --- a/crates/shirabe/src/repository/array_repository.rs +++ b/crates/shirabe/src/repository/array_repository.rs @@ -11,7 +11,9 @@ use shirabe_php_shim::{implode, preg_quote, strtolower}; use shirabe_semver::constraint::AnyConstraint; use shirabe_semver::constraint::SimpleConstraint; +use crate::package::AliasPackageHandle; use crate::package::BasePackageHandle; +use crate::package::CompleteAliasPackageHandle; use crate::package::PackageHandle; use crate::package::PackageInterfaceHandle; use crate::package::version::StabilityFilter; @@ -35,7 +37,7 @@ pub struct ArrayRepository { } impl ArrayRepository { - fn get_packages_internal(&self) -> Vec<BasePackageHandle> { + pub(crate) fn get_packages_internal(&self) -> Vec<BasePackageHandle> { if self.packages.borrow().is_none() { self.initialize(); } @@ -111,13 +113,14 @@ impl ArrayRepository { package = alias_pkg.get_alias_of().into(); } - let _ = (&package, &alias, &pretty_alias); - if package.as_complete_package().is_some() { - // TODO(phase-b): construct CompleteAliasPackage/AliasPackage and return as a handle - return todo!("new CompleteAliasPackage(package, alias, pretty_alias)"); + if let Some(complete) = package.as_complete_package() { + CompleteAliasPackageHandle::new(complete, alias, pretty_alias).into() + } else { + let real = package + .as_package() + .expect("non-alias package must be a real Package"); + AliasPackageHandle::new(real, alias, pretty_alias).into() } - - todo!("new AliasPackage(package, alias, pretty_alias)") } /// Removes package from repository. @@ -149,6 +152,10 @@ impl ArrayRepository { pub(crate) fn reset_packages(&self) { *self.packages.borrow_mut() = None; } + + pub(crate) fn is_initialized(&self) -> bool { + self.packages.borrow().is_some() + } } impl RepositoryInterface for ArrayRepository { |
