aboutsummaryrefslogtreecommitdiffhomepage
path: root/crates/shirabe/src/repository/array_repository.rs
diff options
context:
space:
mode:
authornsfisis <nsfisis@gmail.com>2026-06-10 02:49:06 +0900
committernsfisis <nsfisis@gmail.com>2026-06-10 02:49:28 +0900
commit5d3232a80be4b989e89cc7ae4e3642cc5acae030 (patch)
tree06597252809c209e69400e57494b3376158ce0f9 /crates/shirabe/src/repository/array_repository.rs
parent2d474e91e49c7343d28198eff2b5bbbed9afbcee (diff)
downloadphp-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.rs21
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 {