diff options
Diffstat (limited to 'crates/shirabe/src/repository/lock_array_repository.rs')
| -rw-r--r-- | crates/shirabe/src/repository/lock_array_repository.rs | 77 |
1 files changed, 74 insertions, 3 deletions
diff --git a/crates/shirabe/src/repository/lock_array_repository.rs b/crates/shirabe/src/repository/lock_array_repository.rs index b44f27d..c0a5034 100644 --- a/crates/shirabe/src/repository/lock_array_repository.rs +++ b/crates/shirabe/src/repository/lock_array_repository.rs @@ -1,7 +1,15 @@ //! ref: composer/src/Composer/Repository/LockArrayRepository.php +use crate::package::base_package::BasePackage; +use crate::package::package_interface::PackageInterface; use crate::repository::array_repository::ArrayRepository; use crate::repository::canonical_packages_trait::CanonicalPackagesTrait; +use crate::repository::repository_interface::{ + FindPackageConstraint, LoadPackagesResult, ProviderInfo, RepositoryInterface, SearchResult, +}; +use indexmap::IndexMap; +use shirabe_php_shim::Countable; +use shirabe_semver::constraint::constraint_interface::ConstraintInterface; #[derive(Debug)] pub struct LockArrayRepository { @@ -9,13 +17,76 @@ pub struct LockArrayRepository { } impl CanonicalPackagesTrait for LockArrayRepository { - fn get_packages(&self) -> Vec<Box<dyn crate::package::package_interface::PackageInterface>> { + fn get_packages(&self) -> Vec<Box<dyn PackageInterface>> { todo!() } } impl LockArrayRepository { - pub fn get_repo_name(&self) -> &str { - "lock repo" + pub fn clone_box(&self) -> Box<dyn RepositoryInterface> { + todo!() + } +} + +impl Countable for LockArrayRepository { + fn count(&self) -> i64 { + self.inner.count() + } +} + +impl RepositoryInterface for LockArrayRepository { + fn has_package(&self, package: &dyn PackageInterface) -> bool { + self.inner.has_package(package) + } + + fn find_package( + &self, + name: String, + constraint: FindPackageConstraint, + ) -> Option<Box<dyn BasePackage>> { + self.inner.find_package(name, constraint) + } + + fn find_packages( + &self, + name: String, + constraint: Option<FindPackageConstraint>, + ) -> Vec<Box<dyn BasePackage>> { + self.inner.find_packages(name, constraint) + } + + fn get_packages(&self) -> Vec<Box<dyn BasePackage>> { + RepositoryInterface::get_packages(&self.inner) + } + + fn load_packages( + &self, + package_name_map: IndexMap<String, Option<Box<dyn ConstraintInterface>>>, + acceptable_stabilities: IndexMap<String, i64>, + stability_flags: IndexMap<String, i64>, + already_loaded: IndexMap<String, IndexMap<String, Box<dyn PackageInterface>>>, + ) -> LoadPackagesResult { + self.inner.load_packages( + package_name_map, + acceptable_stabilities, + stability_flags, + already_loaded, + ) + } + + fn search(&self, query: String, mode: i64, r#type: Option<String>) -> Vec<SearchResult> { + self.inner.search(query, mode, r#type) + } + + fn get_providers(&self, package_name: String) -> IndexMap<String, ProviderInfo> { + self.inner.get_providers(package_name) + } + + fn get_repo_name(&self) -> String { + "lock repo".to_string() + } + + fn as_any(&self) -> &dyn std::any::Any { + self } } |
