diff options
| author | nsfisis <nsfisis@gmail.com> | 2026-05-17 02:53:53 +0900 |
|---|---|---|
| committer | nsfisis <nsfisis@gmail.com> | 2026-05-17 02:53:53 +0900 |
| commit | a1c7e6908a26e10f6e1f23a51721664b5e2d838d (patch) | |
| tree | c575c76f1b43359ed74913da4c6a2636643f1ba0 /crates/shirabe/src/repository/repository_manager.rs | |
| parent | 7f606f36fef0c0467c3c0db3d0da33af486dae8a (diff) | |
| download | php-shirabe-a1c7e6908a26e10f6e1f23a51721664b5e2d838d.tar.gz php-shirabe-a1c7e6908a26e10f6e1f23a51721664b5e2d838d.tar.zst php-shirabe-a1c7e6908a26e10f6e1f23a51721664b5e2d838d.zip | |
chore(style): cargo fmt
Diffstat (limited to 'crates/shirabe/src/repository/repository_manager.rs')
| -rw-r--r-- | crates/shirabe/src/repository/repository_manager.rs | 59 |
1 files changed, 48 insertions, 11 deletions
diff --git a/crates/shirabe/src/repository/repository_manager.rs b/crates/shirabe/src/repository/repository_manager.rs index fd60e7b..cc43aed 100644 --- a/crates/shirabe/src/repository/repository_manager.rs +++ b/crates/shirabe/src/repository/repository_manager.rs @@ -1,7 +1,7 @@ //! ref: composer/src/Composer/Repository/RepositoryManager.php use indexmap::IndexMap; -use shirabe_php_shim::{json_encode, InvalidArgumentException, PhpMixed}; +use shirabe_php_shim::{InvalidArgumentException, PhpMixed, json_encode}; use shirabe_semver::constraint::constraint_interface::ConstraintInterface; use crate::config::Config; @@ -26,7 +26,13 @@ pub struct RepositoryManager { } impl RepositoryManager { - pub fn new(io: &dyn IOInterface, config: &Config, http_downloader: HttpDownloader, event_dispatcher: Option<EventDispatcher>, process: Option<ProcessExecutor>) -> Self { + pub fn new( + io: &dyn IOInterface, + config: &Config, + http_downloader: HttpDownloader, + event_dispatcher: Option<EventDispatcher>, + process: Option<ProcessExecutor>, + ) -> Self { let process = process.unwrap_or_else(|| ProcessExecutor::new(io)); Self { local_repository: None, @@ -40,7 +46,11 @@ impl RepositoryManager { } } - pub fn find_package(&self, name: &str, constraint: &dyn ConstraintInterface) -> Option<Box<dyn PackageInterface>> { + pub fn find_package( + &self, + name: &str, + constraint: &dyn ConstraintInterface, + ) -> Option<Box<dyn PackageInterface>> { for repository in &self.repositories { if let Some(package) = repository.find_package(name, constraint) { return Some(package); @@ -49,7 +59,11 @@ impl RepositoryManager { None } - pub fn find_packages(&self, name: &str, constraint: &dyn ConstraintInterface) -> Vec<Box<dyn PackageInterface>> { + pub fn find_packages( + &self, + name: &str, + constraint: &dyn ConstraintInterface, + ) -> Vec<Box<dyn PackageInterface>> { let mut packages: Vec<Box<dyn PackageInterface>> = vec![]; for repository in self.get_repositories() { packages.extend(repository.find_packages(name, constraint)); @@ -65,23 +79,41 @@ impl RepositoryManager { self.repositories.insert(0, repository); } - pub fn create_repository(&self, r#type: &str, config: IndexMap<String, PhpMixed>, name: Option<&str>) -> anyhow::Result<Box<dyn RepositoryInterface>> { + pub fn create_repository( + &self, + r#type: &str, + config: IndexMap<String, PhpMixed>, + name: Option<&str>, + ) -> anyhow::Result<Box<dyn RepositoryInterface>> { if !self.repository_classes.contains_key(r#type) { return Err(InvalidArgumentException { message: format!("Repository type is not registered: {}", r#type), code: 0, - }.into()); + } + .into()); } if config.get("packagist").and_then(|v| v.as_bool()) == Some(false) { - let config_json = json_encode(&PhpMixed::Array(config.iter().map(|(k, v)| (k.clone(), Box::new(v.clone()))).collect())).unwrap_or_default(); + let config_json = json_encode(&PhpMixed::Array( + config + .iter() + .map(|(k, v)| (k.clone(), Box::new(v.clone()))) + .collect(), + )) + .unwrap_or_default(); self.io.write_error(&format!("<warning>Repository \"{}\" ({}) has a packagist key which should be in its own repository definition</warning>", name.unwrap_or(""), config_json)); } let class = self.repository_classes[r#type].clone(); - let has_filter = config.contains_key("only") || config.contains_key("exclude") || config.contains_key("canonical"); - let filter_config = if has_filter { Some(config.clone()) } else { None }; + let has_filter = config.contains_key("only") + || config.contains_key("exclude") + || config.contains_key("canonical"); + let filter_config = if has_filter { + Some(config.clone()) + } else { + None + }; let mut cleaned_config = config; cleaned_config.remove("only"); @@ -98,12 +130,17 @@ impl RepositoryManager { Ok(repository) } - fn create_repository_by_class(&self, _class: &str, _config: IndexMap<String, PhpMixed>) -> anyhow::Result<Box<dyn RepositoryInterface>> { + fn create_repository_by_class( + &self, + _class: &str, + _config: IndexMap<String, PhpMixed>, + ) -> anyhow::Result<Box<dyn RepositoryInterface>> { todo!("Phase B: dynamic class instantiation by class name") } pub fn set_repository_class(&mut self, r#type: &str, class: &str) { - self.repository_classes.insert(r#type.to_string(), class.to_string()); + self.repository_classes + .insert(r#type.to_string(), class.to_string()); } pub fn get_repositories(&self) -> &Vec<Box<dyn RepositoryInterface>> { |
