Patch-Source: https://github.com/rustic-rs/rustic/pull/975 -- From b32769f275adbd719453aefe68785c303664208a Mon Sep 17 00:00:00 2001 From: Jakub Jirutka Date: Mon, 1 Jan 2024 09:11:13 +0100 Subject: [PATCH 2/2] feat(cli): Allow building without self-update feature (#975) Co-authored-by: simonsan <14062932+simonsan@users.noreply.github.com> --- Cargo.toml | 7 ++++--- src/commands.rs | 1 + src/commands/self_update.rs | 13 +++++++++---- 3 files changed, 14 insertions(+), 7 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index 24486f1..054a994 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -31,9 +31,10 @@ description = { workspace = true } members = ["crates/rustic_testing", "xtask"] [features] -default = [] +default = ["self-update"] mimalloc = ["dep:mimalloc"] jemallocator = ["dep:jemallocator-global"] +self-update = ["dep:self_update", "dep:semver"] [[bin]] name = "rustic" @@ -67,8 +68,8 @@ serde_with = { workspace = true } # other dependencies chrono = { workspace = true } -self_update = { workspace = true } -semver = { workspace = true } +self_update = { workspace = true, optional = true } +semver = { workspace = true, optional = true } # commands clap = { workspace = true } diff --git a/src/commands.rs b/src/commands.rs index 07473d3..88432ab 100644 --- a/src/commands.rs +++ b/src/commands.rs @@ -101,6 +101,7 @@ enum RusticCmd { ShowConfig(ShowConfigCmd), /// Update to the latest rustic release + #[cfg_attr(not(feature = "self-update"), clap(hide = true))] SelfUpdate(SelfUpdateCmd), /// Remove unused data or repack repository pack files diff --git a/src/commands/self_update.rs b/src/commands/self_update.rs index dff8fb3..f9540e4 100644 --- a/src/commands/self_update.rs +++ b/src/commands/self_update.rs @@ -5,8 +5,6 @@ use crate::{Application, RUSTIC_APP}; use abscissa_core::{status_err, Command, Runnable, Shutdown}; use anyhow::Result; -use self_update::cargo_crate_version; -use semver::Version; /// `self-update` subcommand #[derive(clap::Parser, Command, Debug)] @@ -26,8 +24,9 @@ impl Runnable for SelfUpdateCmd { } impl SelfUpdateCmd { + #[cfg(feature = "self-update")] fn inner_run(&self) -> Result<()> { - let current_version = Version::parse(cargo_crate_version!())?; + let current_version = semver::Version::parse(self_update::cargo_crate_version!())?; let release = self_update::backends::github::Update::configure() .repo_owner("rustic-rs") @@ -40,7 +39,7 @@ impl SelfUpdateCmd { let latest_release = release.get_latest_release()?; - let upstream_version = Version::parse(&latest_release.version)?; + let upstream_version = semver::Version::parse(&latest_release.version)?; match current_version.cmp(&upstream_version) { std::cmp::Ordering::Greater => { @@ -62,4 +61,10 @@ impl SelfUpdateCmd { Ok(()) } + #[cfg(not(feature = "self-update"))] + fn inner_run(&self) -> Result<()> { + anyhow::bail!( + "This version of rustic was built without the \"self-update\" feature. Please use your system package manager to update it." + ); + } } -- 2.43.0