refactor(lockfile): Pull out dep change detection

This commit is contained in:
Ed Page 2024-03-07 16:50:38 -06:00
parent 9e18941ff6
commit 619238e86b
1 changed files with 14 additions and 4 deletions

View File

@ -202,10 +202,7 @@ fn print_lockfile_update(
vec![]
};
if diff.removed.len() == 1 && diff.added.len() == 1 {
let added = diff.added.into_iter().next().unwrap();
let removed = diff.removed.into_iter().next().unwrap();
if let Some((removed, added)) = diff.change() {
let latest = if !possibilities.is_empty() {
possibilities
.iter()
@ -400,6 +397,19 @@ impl PackageDiff {
changes.into_iter().map(|(_, v)| v).collect()
}
/// Guess if a package upgraded/downgraded
///
/// All `PackageDiff` knows is that entries were added/removed within [`Resolve`].
/// A package could be added or removed because of dependencies from other packages
/// which makes it hard to definitively say "X was upgrade to N".
pub fn change(&self) -> Option<(&PackageId, &PackageId)> {
if self.removed.len() == 1 && self.added.len() == 1 {
Some((&self.removed[0], &self.added[0]))
} else {
None
}
}
/// For querying [`PackageRegistry`] for alternative versions to report to the user
pub fn alternatives_query(&self) -> Option<crate::core::dependency::Dependency> {
let package_id = [