aboutsummaryrefslogtreecommitdiffhomepage
path: root/crates/shirabe/src/dependency_resolver/rule.rs
diff options
context:
space:
mode:
Diffstat (limited to 'crates/shirabe/src/dependency_resolver/rule.rs')
-rw-r--r--crates/shirabe/src/dependency_resolver/rule.rs86
1 files changed, 64 insertions, 22 deletions
diff --git a/crates/shirabe/src/dependency_resolver/rule.rs b/crates/shirabe/src/dependency_resolver/rule.rs
index 8c015b4..1ba1dd7 100644
--- a/crates/shirabe/src/dependency_resolver/rule.rs
+++ b/crates/shirabe/src/dependency_resolver/rule.rs
@@ -5,8 +5,8 @@ use std::any::Any;
use anyhow::Result;
use indexmap::IndexMap;
use shirabe_php_shim::{
- abs, array_filter, array_keys, array_shift, array_values, implode, is_object, LogicException,
- PhpMixed,
+ LogicException, PhpMixed, abs, array_filter, array_keys, array_shift, array_values, implode,
+ is_object,
};
use shirabe_semver::constraint::constraint::Constraint;
use shirabe_semver::constraint::constraint_interface::ConstraintInterface;
@@ -156,7 +156,9 @@ impl Rule {
if pool.is_unacceptable_fixed_or_locked_package(p) {
return true;
}
- if !link.get_constraint().matches(&Constraint::new("=", p.get_version()))
+ if !link
+ .get_constraint()
+ .matches(&Constraint::new("=", p.get_version()))
{
return true;
}
@@ -173,7 +175,11 @@ impl Rule {
}
if self.get_reason() == Self::RULE_ROOT_REQUIRE {
- if let ReasonData::RootRequire { package_name, constraint } = self.get_reason_data() {
+ if let ReasonData::RootRequire {
+ package_name,
+ constraint,
+ } = self.get_reason_data()
+ {
if PlatformRepository::is_platform_package(package_name) {
return false;
}
@@ -254,9 +260,10 @@ impl Rule {
let reason_data = self.get_reason_data();
let (package_name, constraint): (&str, &dyn ConstraintInterface) = match reason_data
{
- ReasonData::RootRequire { package_name, constraint } => {
- (package_name.as_str(), constraint.as_ref())
- }
+ ReasonData::RootRequire {
+ package_name,
+ constraint,
+ } => (package_name.as_str(), constraint.as_ref()),
_ => return String::new(),
};
@@ -273,7 +280,9 @@ impl Rule {
let packages_non_alias: Vec<Box<BasePackage>> = packages
.iter()
.filter(|p| {
- (p.as_any() as &dyn Any).downcast_ref::<AliasPackage>().is_none()
+ (p.as_any() as &dyn Any)
+ .downcast_ref::<AliasPackage>()
+ .is_none()
})
.map(|p| p.clone_box())
.collect();
@@ -293,7 +302,13 @@ impl Rule {
"Root composer.json requires {} {} -> satisfiable by {}.",
package_name,
constraint.get_pretty_string(),
- self.format_packages_unique(pool, packages, is_verbose, Some(constraint), false),
+ self.format_packages_unique(
+ pool,
+ packages,
+ is_verbose,
+ Some(constraint),
+ false
+ ),
)
}
@@ -335,8 +350,11 @@ impl Rule {
// swap literals if they are not in the right order with package2 being the conflicter
if link.get_source() == package1.get_name() {
std::mem::swap(&mut package1, &mut package2);
- conflict_target =
- format!("{} {}", package1.get_pretty_name(), link.get_pretty_constraint().unwrap_or(""));
+ conflict_target = format!(
+ "{} {}",
+ package1.get_pretty_name(),
+ link.get_pretty_constraint().unwrap_or("")
+ );
}
// if the conflict is not directly against the package but something it provides/replaces,
@@ -347,14 +365,16 @@ impl Rule {
for provide in package1.get_provides().values() {
if provide.get_target() == link.get_target() {
provide_type = Some("provides");
- provided = Some(provide.get_pretty_constraint().unwrap_or("").to_string());
+ provided =
+ Some(provide.get_pretty_constraint().unwrap_or("").to_string());
break;
}
}
for replace in package1.get_replaces().values() {
if replace.get_target() == link.get_target() {
provide_type = Some("replaces");
- provided = Some(replace.get_pretty_constraint().unwrap_or("").to_string());
+ provided =
+ Some(replace.get_pretty_constraint().unwrap_or("").to_string());
break;
}
}
@@ -371,7 +391,11 @@ impl Rule {
}
}
- format!("{} conflicts with {}.", package2.get_pretty_string(), conflict_target)
+ format!(
+ "{} conflicts with {}.",
+ package2.get_pretty_string(),
+ conflict_target
+ )
}
r if r == Self::RULE_PACKAGE_REQUIRES => {
@@ -488,14 +512,18 @@ impl Rule {
return format!(
"Only one of these can be installed: {}. {}",
- self.format_packages_unique_from_literals(pool, &literals, is_verbose, None, true),
+ self.format_packages_unique_from_literals(
+ pool, &literals, is_verbose, None, true
+ ),
reason,
);
}
format!(
"You can only install one version of a package, so only one of these can be installed: {}.",
- self.format_packages_unique_from_literals(pool, &literals, is_verbose, None, true),
+ self.format_packages_unique_from_literals(
+ pool, &literals, is_verbose, None, true
+ ),
)
}
r if r == Self::RULE_LEARNED => {
@@ -512,7 +540,11 @@ impl Rule {
let group = if installed_map.contains_key(&package.id) {
if *literal > 0 { "keep" } else { "remove" }
} else {
- if *literal > 0 { "install" } else { "don't install" }
+ if *literal > 0 {
+ "install"
+ } else {
+ "don't install"
+ }
};
groups
@@ -604,7 +636,13 @@ impl Rule {
packages.push(package);
}
- Problem::get_package_list(packages, is_verbose, pool, constraint, use_removed_version_group)
+ Problem::get_package_list(
+ packages,
+ is_verbose,
+ pool,
+ constraint,
+ use_removed_version_group,
+ )
}
/// Helper for cases where literals come as int IDs (PHP supports both via union).
@@ -620,13 +658,17 @@ impl Rule {
for literal in literals {
packages.push(pool.literal_to_package(*literal).clone_box());
}
- Problem::get_package_list(packages, is_verbose, pool, constraint, use_removed_version_group)
+ Problem::get_package_list(
+ packages,
+ is_verbose,
+ pool,
+ constraint,
+ use_removed_version_group,
+ )
}
fn deduplicate_default_branch_alias(&self, package: Box<BasePackage>) -> Box<BasePackage> {
- if let Some(alias_pkg) =
- (package.as_any() as &dyn Any).downcast_ref::<AliasPackage>()
- {
+ if let Some(alias_pkg) = (package.as_any() as &dyn Any).downcast_ref::<AliasPackage>() {
if alias_pkg.get_pretty_version() == VersionParser::DEFAULT_BRANCH_ALIAS {
return alias_pkg.get_alias_of().clone_box();
}