aboutsummaryrefslogtreecommitdiffhomepage
path: root/crates/shirabe/src/repository/platform_repository.rs
diff options
context:
space:
mode:
Diffstat (limited to 'crates/shirabe/src/repository/platform_repository.rs')
-rw-r--r--crates/shirabe/src/repository/platform_repository.rs83
1 files changed, 82 insertions, 1 deletions
diff --git a/crates/shirabe/src/repository/platform_repository.rs b/crates/shirabe/src/repository/platform_repository.rs
index 4d522f5..8fb9d0a 100644
--- a/crates/shirabe/src/repository/platform_repository.rs
+++ b/crates/shirabe/src/repository/platform_repository.rs
@@ -55,6 +55,13 @@ impl PlatformRepository {
pub fn new(
packages: Vec<Box<dyn PackageInterface>>,
overrides: IndexMap<String, PhpMixed>,
+ ) -> anyhow::Result<Self> {
+ Self::new4(packages, overrides, None, None)
+ }
+
+ pub fn new4(
+ packages: Vec<Box<dyn PackageInterface>>,
+ overrides: IndexMap<String, PhpMixed>,
runtime: Option<Runtime>,
hhvm_detector: Option<HhvmDetector>,
) -> anyhow::Result<Self> {
@@ -91,7 +98,7 @@ impl PlatformRepository {
);
}
Ok(Self {
- inner: ArrayRepository::new(packages),
+ inner: ArrayRepository::new(packages)?,
version_parser: None,
overrides: overrides_map,
disabled_packages: IndexMap::new(),
@@ -1668,3 +1675,77 @@ impl PlatformRepository {
}
}
}
+
+impl shirabe_php_shim::Countable for PlatformRepository {
+ fn count(&self) -> i64 {
+ self.inner.count()
+ }
+}
+
+impl crate::repository::repository_interface::RepositoryInterface for PlatformRepository {
+ 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<Box<dyn crate::package::base_package::BasePackage>> {
+ self.inner.find_package(name, constraint)
+ }
+
+ fn find_packages(
+ &self,
+ name: String,
+ constraint: Option<crate::repository::repository_interface::FindPackageConstraint>,
+ ) -> Vec<Box<dyn crate::package::base_package::BasePackage>> {
+ self.inner.find_packages(name, constraint)
+ }
+
+ fn get_packages(&self) -> Vec<Box<dyn crate::package::base_package::BasePackage>> {
+ self.inner.get_packages()
+ }
+
+ fn load_packages(
+ &self,
+ package_name_map: IndexMap<
+ String,
+ Option<Box<dyn shirabe_semver::constraint::constraint_interface::ConstraintInterface>>,
+ >,
+ acceptable_stabilities: IndexMap<String, i64>,
+ stability_flags: IndexMap<String, i64>,
+ already_loaded: IndexMap<String, IndexMap<String, Box<dyn PackageInterface>>>,
+ ) -> 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<String>,
+ ) -> Vec<crate::repository::repository_interface::SearchResult> {
+ self.inner.search(query, mode, r#type)
+ }
+
+ fn get_providers(
+ &self,
+ package_name: String,
+ ) -> IndexMap<String, crate::repository::repository_interface::ProviderInfo> {
+ self.inner.get_providers(package_name)
+ }
+
+ fn get_repo_name(&self) -> String {
+ PlatformRepository::get_repo_name(self)
+ }
+
+ fn as_any(&self) -> &dyn std::any::Any {
+ self
+ }
+}