//! ref: composer/src/Composer/Repository/LockArrayRepository.php use crate::package::BasePackageHandle; use crate::package::PackageInterfaceHandle; use crate::repository::ArrayRepository; use crate::repository::CanonicalPackagesTrait; use crate::repository::{ FindPackageConstraint, LoadPackagesResult, ProviderInfo, RepositoryInterface, RepositoryInterfaceWeakHandle, SearchResult, }; use indexmap::IndexMap; use shirabe_semver::constraint::AnyConstraint; #[derive(Debug)] pub struct LockArrayRepository { inner: ArrayRepository, } impl CanonicalPackagesTrait for LockArrayRepository {} impl LockArrayRepository { pub fn new(packages: Vec) -> anyhow::Result { Ok(Self { inner: ArrayRepository::new(packages)?, }) } pub fn add_package(&self, package: PackageInterfaceHandle) -> anyhow::Result<()> { self.inner.add_package(package) } } impl RepositoryInterface for LockArrayRepository { fn count(&self) -> anyhow::Result { self.inner.count() } fn has_package(&self, package: PackageInterfaceHandle) -> bool { self.inner.has_package(package) } fn find_package( &mut self, name: &str, constraint: FindPackageConstraint, ) -> anyhow::Result> { self.inner.find_package(name, constraint) } fn find_packages( &mut self, name: &str, constraint: Option, ) -> anyhow::Result> { self.inner.find_packages(name, constraint) } fn get_packages(&mut self) -> anyhow::Result> { RepositoryInterface::get_packages(&mut self.inner) } fn load_packages( &mut self, package_name_map: IndexMap>, acceptable_stabilities: IndexMap, stability_flags: IndexMap, already_loaded: IndexMap>, ) -> anyhow::Result { self.inner.load_packages( package_name_map, acceptable_stabilities, stability_flags, already_loaded, ) } fn search( &mut self, query: String, mode: i64, r#type: Option, ) -> anyhow::Result> { self.inner.search(query, mode, r#type) } fn get_providers( &mut self, package_name: String, ) -> anyhow::Result> { 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 } fn set_self_handle(&self, weak: RepositoryInterfaceWeakHandle) { self.inner.set_self_handle(weak); } }