aboutsummaryrefslogtreecommitdiffhomepage
path: root/crates/shirabe/src/repository/repository_manager.rs
diff options
context:
space:
mode:
authornsfisis <nsfisis@gmail.com>2026-05-17 02:53:53 +0900
committernsfisis <nsfisis@gmail.com>2026-05-17 02:53:53 +0900
commita1c7e6908a26e10f6e1f23a51721664b5e2d838d (patch)
treec575c76f1b43359ed74913da4c6a2636643f1ba0 /crates/shirabe/src/repository/repository_manager.rs
parent7f606f36fef0c0467c3c0db3d0da33af486dae8a (diff)
downloadphp-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.rs59
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>> {