Skip to content

Commit

Permalink
Refactor as requested in review
Browse files Browse the repository at this point in the history
Fix PubGrub commit
  • Loading branch information
zanieb committed Dec 12, 2023
1 parent a5992a9 commit 2a841c4
Show file tree
Hide file tree
Showing 3 changed files with 25 additions and 50 deletions.
2 changes: 1 addition & 1 deletion Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ once_cell = { version = "1.18.0" }
petgraph = { version = "0.6.4" }
platform-info = { version = "2.0.2" }
plist = { version = "1.6.0" }
pubgrub = { git = "https://github.com/zanieb/pubgrub", rev = "c30acff93d541ea381128a502c61e2894388f57a" }
pubgrub = { git = "https://github.com/zanieb/pubgrub", rev = "8fff95d6a233a9fa4ee5ab5429033f0f0d3ddb20" }
pyo3 = { version = "0.20.0" }
pyo3-log = { version = "0.9.0"}
pyproject-toml = { version = "0.8.0" }
Expand Down
71 changes: 23 additions & 48 deletions crates/puffin-resolver/src/pubgrub/report.rs
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,21 @@ pub struct PubGrubReportFormatter<'a> {
pub available_versions: &'a FxHashMap<PubGrubPackage, Vec<PubGrubVersion>>,
}

impl PubGrubReportFormatter<'_> {
fn simplify_set(
&self,
set: &Range<PubGrubVersion>,
package: &PubGrubPackage,
) -> Range<PubGrubVersion> {
set.simplify(
self.available_versions
.get(package)
.unwrap_or(&vec![])
.iter(),
)
}
}

impl ReportFormatter<PubGrubPackage, Range<PubGrubVersion>> for PubGrubReportFormatter<'_> {
type Output = String;

Expand All @@ -27,25 +42,15 @@ impl ReportFormatter<PubGrubPackage, Range<PubGrubVersion>> for PubGrubReportFor
if set == &Range::full() {
format!("there is no available version for {package}")
} else {
let set = set.simplify(
self.available_versions
.get(package)
.unwrap_or(&vec![])
.iter(),
);
let set = self.simplify_set(set, package);
format!("there is no version of {package} available matching {set}")
}
}
External::UnavailableDependencies(package, set) => {
if set == &Range::full() {
format!("dependencies of {package} are unavailable")
} else {
let set = set.simplify(
self.available_versions
.get(package)
.unwrap_or(&vec![])
.iter(),
);
let set = self.simplify_set(set, package);
format!("dependencies of {package} at version {set} are unavailable")
}
}
Expand All @@ -57,25 +62,15 @@ impl ReportFormatter<PubGrubPackage, Range<PubGrubVersion>> for PubGrubReportFor
if set == &Range::full() {
format!("dependencies of {package} are unusable: {reason}")
} else {
let set = set.simplify(
self.available_versions
.get(package)
.unwrap_or(&vec![])
.iter(),
);
let set = self.simplify_set(set, package);
format!("dependencies of {package}{set} are unusable: {reason}",)
}
}
} else {
if set == &Range::full() {
format!("dependencies of {package} are unusable")
} else {
let set = set.simplify(
self.available_versions
.get(package)
.unwrap_or(&vec![])
.iter(),
);
let set = self.simplify_set(set, package);
format!("dependencies of {package}{set} are unusable")
}
}
Expand All @@ -84,43 +79,23 @@ impl ReportFormatter<PubGrubPackage, Range<PubGrubVersion>> for PubGrubReportFor
if package_set == &Range::full() && dependency_set == &Range::full() {
format!("{package} depends on {dependency}")
} else if package_set == &Range::full() {
let dependency_set = dependency_set.simplify(
self.available_versions
.get(package)
.unwrap_or(&vec![])
.iter(),
);
let dependency_set = self.simplify_set(dependency_set, package);
format!("{package} depends on {dependency}{dependency_set}")
} else if dependency_set == &Range::full() {
if matches!(package, PubGrubPackage::Root(_)) {
// Exclude the dummy version for root packages
format!("{package} depends on {dependency}")
} else {
let package_set = package_set.simplify(
self.available_versions
.get(package)
.unwrap_or(&vec![])
.iter(),
);
let package_set = self.simplify_set(package_set, package);
format!("{package}{package_set} depends on {dependency}")
}
} else {
let dependency_set = dependency_set.simplify(
self.available_versions
.get(package)
.unwrap_or(&vec![])
.iter(),
);
let dependency_set = self.simplify_set(dependency_set, package);
if matches!(package, PubGrubPackage::Root(_)) {
// Exclude the dummy version for root packages
format!("{package} depends on {dependency}{dependency_set}")
} else {
let package_set = package_set.simplify(
self.available_versions
.get(package)
.unwrap_or(&vec![])
.iter(),
);
let package_set = self.simplify_set(package_set, package);
format!("{package}{package_set} depends on {dependency}{dependency_set}")
}
}
Expand Down

0 comments on commit 2a841c4

Please sign in to comment.