From c0ed70ef5ee2e2b1c251e54710618df31c66f54a Mon Sep 17 00:00:00 2001 From: David Tolnay Date: Mon, 9 Oct 2023 15:19:38 -0700 Subject: [PATCH] Use semver::Version's cmp_precedence for deciding what is downgrade --- Cargo.lock | 4 ++-- Cargo.toml | 2 +- src/cargo/ops/cargo_generate_lockfile.rs | 7 ++----- 3 files changed, 5 insertions(+), 8 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 8affbedbc..b96ea193a 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2886,9 +2886,9 @@ dependencies = [ [[package]] name = "semver" -version = "1.0.19" +version = "1.0.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad977052201c6de01a8ef2aa3378c4bd23217a056337d1d6da40468d267a4fb0" +checksum = "836fa6a3e1e547f9a2c4040802ec865b5d85f4014efe00555d7090a3dcaa1090" dependencies = [ "serde", ] diff --git a/Cargo.toml b/Cargo.toml index 1af7cce75..7117302ac 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -76,7 +76,7 @@ rand = "0.8.5" rustfix = "0.6.1" same-file = "1.0.6" security-framework = "2.9.2" -semver = { version = "1.0.19", features = ["serde"] } +semver = { version = "1.0.20", features = ["serde"] } serde = "1.0.188" serde-untagged = "0.1.1" serde-value = "0.7.0" diff --git a/src/cargo/ops/cargo_generate_lockfile.rs b/src/cargo/ops/cargo_generate_lockfile.rs index 192cf50fc..cbacfd8a9 100644 --- a/src/cargo/ops/cargo_generate_lockfile.rs +++ b/src/cargo/ops/cargo_generate_lockfile.rs @@ -8,6 +8,7 @@ use crate::util::config::Config; use crate::util::style; use crate::util::CargoResult; use anstyle::Style; +use std::cmp::Ordering; use std::collections::{BTreeMap, HashSet}; use tracing::debug; @@ -156,11 +157,7 @@ pub fn update_lockfile(ws: &Workspace<'_>, opts: &UpdateOptions<'_>) -> CargoRes // regardless of whether the build metadata has gone up or down. // This metadata is often stuff like git commit hashes, which are // not meaningfully ordered. - let removed = removed[0].version(); - let added = added[0].version(); - if (removed.major, removed.minor, removed.patch, &removed.pre) - > (added.major, added.minor, added.patch, &added.pre) - { + if removed[0].version().cmp_precedence(added[0].version()) == Ordering::Greater { print_change("Downgrading", msg, &style::WARN)?; } else { print_change("Updating", msg, &style::GOOD)?;