From c839244d8d09f3036ebfee8eef7eb6b147e593ab Mon Sep 17 00:00:00 2001 From: nsfisis Date: Tue, 19 May 2026 00:10:22 +0900 Subject: fix(compile): fix various compile errors Co-Authored-By: Claude Sonnet 4.6 --- .../src/repository/root_package_repository.rs | 76 +++++++++++++++++++++- 1 file changed, 75 insertions(+), 1 deletion(-) (limited to 'crates/shirabe/src/repository/root_package_repository.rs') diff --git a/crates/shirabe/src/repository/root_package_repository.rs b/crates/shirabe/src/repository/root_package_repository.rs index 4797e25..6c6e25d 100644 --- a/crates/shirabe/src/repository/root_package_repository.rs +++ b/crates/shirabe/src/repository/root_package_repository.rs @@ -1,7 +1,11 @@ //! ref: composer/src/Composer/Repository/RootPackageRepository.php +use crate::package::base_package::BasePackage; +use crate::package::package_interface::PackageInterface; use crate::package::root_package_interface::RootPackageInterface; use crate::repository::array_repository::ArrayRepository; +use crate::repository::repository_interface::{ProviderInfo, RepositoryInterface, SearchResult}; +use indexmap::IndexMap; #[derive(Debug)] pub struct RootPackageRepository { @@ -11,7 +15,11 @@ pub struct RootPackageRepository { impl RootPackageRepository { pub fn new(package: Box) -> Self { Self { - inner: ArrayRepository::new(vec![package]), + // TODO(phase-b): RootPackageInterface vs BasePackage upcast + ArrayRepository::new error + inner: ArrayRepository::new(vec![todo!( + "convert Box to Box" + )]) + .expect("invalid root package"), } } @@ -19,3 +27,69 @@ impl RootPackageRepository { "root package repo".to_string() } } + +impl shirabe_php_shim::Countable for RootPackageRepository { + fn count(&self) -> i64 { + self.inner.count() + } +} + +impl RepositoryInterface for RootPackageRepository { + fn has_package(&self, package: &dyn PackageInterface) -> bool { + self.inner.has_package(package) + } + + fn find_package( + &self, + name: String, + constraint: crate::repository::repository_interface::FindPackageConstraint, + ) -> Option> { + self.inner.find_package(name, constraint) + } + + fn find_packages( + &self, + name: String, + constraint: Option, + ) -> Vec> { + self.inner.find_packages(name, constraint) + } + + fn get_packages(&self) -> Vec> { + self.inner.get_packages() + } + + fn load_packages( + &self, + package_name_map: IndexMap< + String, + Option>, + >, + acceptable_stabilities: IndexMap, + stability_flags: IndexMap, + already_loaded: IndexMap>>, + ) -> crate::repository::repository_interface::LoadPackagesResult { + self.inner.load_packages( + package_name_map, + acceptable_stabilities, + stability_flags, + already_loaded, + ) + } + + fn search(&self, query: String, mode: i64, r#type: Option) -> Vec { + self.inner.search(query, mode, r#type) + } + + fn get_providers(&self, package_name: String) -> IndexMap { + self.inner.get_providers(package_name) + } + + fn get_repo_name(&self) -> String { + RootPackageRepository::get_repo_name(self) + } + + fn as_any(&self) -> &dyn std::any::Any { + self + } +} -- cgit v1.3.1