From d21de3cd252d80bf54a6d0b175122048b8af85fd Mon Sep 17 00:00:00 2001 From: Mag Mell Date: Fri, 26 Jan 2024 17:45:42 +0800 Subject: [PATCH] chore: add feature to allow always disable check update (#1628) * chore: add feature to allow always disable check update In the packaging rules of some distributions, the software's self-update check needs to be permanently turned off This commit will make it easier for these users to * fix: formatting --------- Co-authored-by: Ellie Huxtable --- atuin-client/Cargo.toml | 1 + atuin-client/src/api_client.rs | 8 ++++++-- atuin-client/src/settings.rs | 10 +++++++++- atuin/Cargo.toml | 3 ++- 4 files changed, 18 insertions(+), 4 deletions(-) diff --git a/atuin-client/Cargo.toml b/atuin-client/Cargo.toml index cbb8d016..e224ad83 100644 --- a/atuin-client/Cargo.toml +++ b/atuin-client/Cargo.toml @@ -15,6 +15,7 @@ repository = { workspace = true } [features] default = ["sync"] sync = ["urlencoding", "reqwest", "sha2", "hex"] +check-update = [] [dependencies] atuin-common = { path = "../atuin-common", version = "17.2.1" } diff --git a/atuin-client/src/api_client.rs b/atuin-client/src/api_client.rs index affb3c98..dc835cfb 100644 --- a/atuin-client/src/api_client.rs +++ b/atuin-client/src/api_client.rs @@ -10,8 +10,8 @@ use reqwest::{ use atuin_common::{ api::{ - AddHistoryRequest, CountResponse, DeleteHistoryRequest, ErrorResponse, IndexResponse, - LoginRequest, LoginResponse, RegisterResponse, StatusResponse, SyncHistoryResponse, + AddHistoryRequest, CountResponse, DeleteHistoryRequest, ErrorResponse, LoginRequest, + LoginResponse, RegisterResponse, StatusResponse, SyncHistoryResponse, }, record::RecordStatus, }; @@ -19,6 +19,7 @@ use atuin_common::{ api::{ATUIN_CARGO_VERSION, ATUIN_HEADER_VERSION, ATUIN_VERSION}, record::{EncryptedData, HostId, Record, RecordIdx}, }; + use semver::Version; use time::format_description::well_known::Rfc3339; use time::OffsetDateTime; @@ -97,7 +98,10 @@ pub async fn login(address: &str, req: LoginRequest) -> Result { Ok(session) } +#[cfg(feature = "check-update")] pub async fn latest_version() -> Result { + use atuin_common::api::IndexResponse; + let url = "https://api.atuin.sh"; let client = reqwest::Client::new(); diff --git a/atuin-client/src/settings.rs b/atuin-client/src/settings.rs index c95c8ba5..122b8d57 100644 --- a/atuin-client/src/settings.rs +++ b/atuin-client/src/settings.rs @@ -402,6 +402,7 @@ impl Settings { } } + #[cfg(feature = "check-update")] fn needs_update_check(&self) -> Result { let last_check = Settings::last_version_check()?; let diff = OffsetDateTime::now_utc() - last_check; @@ -410,6 +411,7 @@ impl Settings { Ok(diff.whole_hours() >= 1) } + #[cfg(feature = "check-update")] async fn latest_version(&self) -> Result { // Default to the current version, and if that doesn't parse, a version so high it's unlikely to ever // suggest upgrading. @@ -440,6 +442,7 @@ impl Settings { } // Return Some(latest version) if an update is needed. Otherwise, none. + #[cfg(feature = "check-update")] pub async fn needs_update(&self) -> Option { if !self.update_check { return None; @@ -463,6 +466,11 @@ impl Settings { None } + #[cfg(not(feature = "check-update"))] + pub async fn needs_update(&self) -> Option { + None + } + pub fn builder() -> Result> { let data_dir = atuin_common::utils::data_dir(); let db_path = data_dir.join("history.db"); @@ -478,7 +486,7 @@ impl Settings { .set_default("session_path", session_path.to_str())? .set_default("dialect", "us")? .set_default("auto_sync", true)? - .set_default("update_check", true)? + .set_default("update_check", cfg!(feature = "check-update"))? .set_default("sync_address", "https://api.atuin.sh")? .set_default("sync_frequency", "10m")? .set_default("search_mode", "fuzzy")? diff --git a/atuin/Cargo.toml b/atuin/Cargo.toml index c6961af7..5da8d149 100644 --- a/atuin/Cargo.toml +++ b/atuin/Cargo.toml @@ -33,11 +33,12 @@ buildflags = ["--release"] atuin = { path = "/usr/bin/atuin" } [features] -default = ["client", "sync", "server", "clipboard"] +default = ["client", "sync", "server", "clipboard", "check-update"] client = ["atuin-client"] sync = ["atuin-client/sync"] server = ["atuin-server", "atuin-server-postgres", "tracing-subscriber"] clipboard = ["cli-clipboard"] +check-update = ["atuin-client/check-update"] [dependencies] atuin-server-postgres = { path = "../atuin-server-postgres", version = "17.2.1", optional = true }