Skip to content

Commit de15651

Browse files
committed
refactor(update): Pull out is_latest check
1 parent b7a0d9b commit de15651

File tree

1 file changed

+9
-9
lines changed

1 file changed

+9
-9
lines changed

src/cargo/ops/cargo_generate_lockfile.rs

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -170,6 +170,14 @@ pub fn update_lockfile(ws: &Workspace<'_>, opts: &UpdateOptions<'_>) -> CargoRes
170170
let warn = style::WARN;
171171
format!(" {warn}(latest: v{version}){warn:#}")
172172
}
173+
fn is_latest(candidate: &semver::Version, current: &semver::Version) -> bool {
174+
current < candidate
175+
// Only match pre-release if major.minor.patch are the same
176+
&& (candidate.pre.is_empty()
177+
|| (candidate.major == current.major
178+
&& candidate.minor == current.minor
179+
&& candidate.patch == current.patch))
180+
}
173181

174182
let highest_present = [added.iter().rev().next(), unchanged.iter().rev().next()]
175183
.into_iter()
@@ -194,17 +202,9 @@ pub fn update_lockfile(ws: &Workspace<'_>, opts: &UpdateOptions<'_>) -> CargoRes
194202
possibilities
195203
.iter()
196204
.map(|s| s.as_summary())
197-
.filter(|s| {
198-
let s_version = s.version();
199-
s_version.pre.is_empty()
200-
// Only match pre-release if major.minor.patch are the same
201-
|| (s_version.major == present_version.major
202-
&& s_version.minor == present_version.minor
203-
&& s_version.patch == present_version.patch)
204-
})
205+
.filter(|s| is_latest(s.version(), present_version))
205206
.map(|s| s.version().clone())
206207
.max()
207-
.filter(|v| present.version() < v)
208208
.map(format_latest)
209209
} else {
210210
None

0 commit comments

Comments
 (0)