aboutsummaryrefslogtreecommitdiffhomepage
path: root/crates/shirabe/src/repository/lock_array_repository.rs
diff options
context:
space:
mode:
Diffstat (limited to 'crates/shirabe/src/repository/lock_array_repository.rs')
-rw-r--r--crates/shirabe/src/repository/lock_array_repository.rs77
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
}
}