//! ref: composer/src/Composer/Repository/InstalledArrayRepository.php use indexmap::IndexMap; use shirabe_php_shim::Countable; use shirabe_semver::constraint::constraint_interface::ConstraintInterface; use crate::package::base_package::BasePackage; use crate::package::package_interface::PackageInterface; use crate::repository::advisory_provider_interface::AdvisoryProviderInterface; use crate::repository::installed_repository_interface::InstalledRepositoryInterface; use crate::repository::repository_interface::{ FindPackageConstraint, LoadPackagesResult, ProviderInfo, RepositoryInterface, SearchResult, }; use crate::repository::writable_array_repository::WritableArrayRepository; use crate::repository::writable_repository_interface::WritableRepositoryInterface; #[derive(Debug)] pub struct InstalledArrayRepository { inner: WritableArrayRepository, } impl InstalledArrayRepository { pub fn new() -> anyhow::Result { Self::new_with_packages(Vec::new()) } pub fn new_with_packages(packages: Vec>) -> anyhow::Result { Ok(Self { inner: WritableArrayRepository::new(packages)?, }) } pub fn get_repo_name(&self) -> String { format!("installed {}", self.inner.get_repo_name()) } } impl InstalledRepositoryInterface for InstalledArrayRepository { fn get_dev_mode(&self) -> Option { self.inner.get_dev_mode() } fn is_fresh(&self) -> bool { self.inner.count() == 0 } } impl WritableRepositoryInterface for InstalledArrayRepository { fn write( &mut self, dev_mode: bool, installation_manager: &crate::installer::installation_manager::InstallationManager, ) -> anyhow::Result<()> { todo!() } fn add_package( &mut self, package: Box, ) -> anyhow::Result<()> { todo!() } fn remove_package( &mut self, package: &dyn crate::package::package_interface::PackageInterface, ) -> anyhow::Result<()> { todo!() } fn get_canonical_packages( &self, ) -> Vec> { todo!() } fn reload(&mut self) { todo!() } fn set_dev_package_names(&mut self, dev_package_names: Vec) { todo!() } fn get_dev_package_names(&self) -> &Vec { todo!() } } impl Countable for InstalledArrayRepository { fn count(&self) -> i64 { todo!() } } impl RepositoryInterface for InstalledArrayRepository { fn has_package(&self, _package: &dyn PackageInterface) -> bool { todo!() } fn find_package( &self, _name: &str, _constraint: FindPackageConstraint, ) -> Option> { todo!() } fn find_packages( &self, _name: &str, _constraint: Option, ) -> Vec> { todo!() } fn get_packages(&self) -> Vec> { todo!() } fn load_packages( &self, _package_name_map: IndexMap>>, _acceptable_stabilities: IndexMap, _stability_flags: IndexMap, _already_loaded: IndexMap>>, ) -> LoadPackagesResult { todo!() } fn search(&self, _query: String, _mode: i64, _type: Option) -> Vec { todo!() } fn get_providers(&self, _package_name: String) -> IndexMap { todo!() } fn get_repo_name(&self) -> String { todo!() } fn as_advisory_provider(&self) -> Option<&dyn AdvisoryProviderInterface> { None } fn as_any(&self) -> &dyn std::any::Any { todo!() } }