From a496cc47051eb1e23fbb174cddb57a8f6cede51b Mon Sep 17 00:00:00 2001 From: strawberry Date: Wed, 1 May 2024 13:35:16 -0400 Subject: [PATCH] dedupe version getting code, rename to `CONDUWUIT_VERSION_EXTRA` Signed-off-by: strawberry --- nix/pkgs/main/default.nix | 2 +- src/api/client_server/unversioned.rs | 16 +++------------- src/api/server_server.rs | 7 +------ src/main.rs | 2 +- src/service/globals/client.rs | 7 ++----- src/utils/clap.rs | 17 ++--------------- src/utils/mod.rs | 16 ++++++++++++++++ 7 files changed, 26 insertions(+), 41 deletions(-) diff --git a/nix/pkgs/main/default.nix b/nix/pkgs/main/default.nix index 9ac91039..3ede7ffd 100644 --- a/nix/pkgs/main/default.nix +++ b/nix/pkgs/main/default.nix @@ -37,7 +37,7 @@ buildDepsOnlyEnv = }); buildPackageEnv = { - CONDUIT_VERSION_EXTRA = inputs.self.shortRev or inputs.self.dirtyShortRev; + CONDUWUIT_VERSION_EXTRA = inputs.self.shortRev or inputs.self.dirtyShortRev; } // buildDepsOnlyEnv; commonAttrs = { diff --git a/src/api/client_server/unversioned.rs b/src/api/client_server/unversioned.rs index c9dd1a4b..725b88bb 100644 --- a/src/api/client_server/unversioned.rs +++ b/src/api/client_server/unversioned.rs @@ -10,7 +10,7 @@ use ruma::api::client::{ error::ErrorKind, }; -use crate::{services, Error, Result, Ruma}; +use crate::{services, utils::conduwuit_version, Error, Result, Ruma}; /// # `GET /_matrix/client/versions` /// @@ -142,14 +142,9 @@ pub(crate) async fn syncv3_client_server_json() -> Result { }, }; - let version = match option_env!("CONDUIT_VERSION_EXTRA") { - Some(extra) => format!("{} ({})", env!("CARGO_PKG_VERSION"), extra), - None => env!("CARGO_PKG_VERSION").to_owned(), - }; - Ok(Json(serde_json::json!({ "server": server_url, - "version": version, + "version": conduwuit_version(), }))) } @@ -158,13 +153,8 @@ pub(crate) async fn syncv3_client_server_json() -> Result { /// Conduwuit-specific API to get the server version, results akin to /// `/_matrix/federation/v1/version` pub(crate) async fn conduwuit_server_version() -> Result { - let version = match option_env!("CONDUIT_VERSION_EXTRA") { - Some(extra) => format!("{} ({})", env!("CARGO_PKG_VERSION"), extra), - None => env!("CARGO_PKG_VERSION").to_owned(), - }; - Ok(Json(serde_json::json!({ "name": "Conduwuit", - "version": version, + "version": conduwuit_version(), }))) } diff --git a/src/api/server_server.rs b/src/api/server_server.rs index 66fccc7e..1d0cbd9d 100644 --- a/src/api/server_server.rs +++ b/src/api/server_server.rs @@ -66,15 +66,10 @@ use crate::{ pub(crate) async fn get_server_version_route( _body: Ruma, ) -> Result { - let version = match option_env!("CONDUIT_VERSION_EXTRA") { - Some(extra) => format!("{} ({})", env!("CARGO_PKG_VERSION"), extra), - None => env!("CARGO_PKG_VERSION").to_owned(), - }; - Ok(get_server_version::v1::Response { server: Some(get_server_version::v1::Server { name: Some("Conduwuit".to_owned()), - version: Some(version), + version: Some(utils::conduwuit_version()), }), }) } diff --git a/src/main.rs b/src/main.rs index 81b71435..c82d8119 100644 --- a/src/main.rs +++ b/src/main.rs @@ -287,7 +287,7 @@ fn init(args: clap::Args) -> Result { database_path = ?config.database_path, log_levels = ?config.log, "{}", - env!("CARGO_PKG_VERSION"), + utils::conduwuit_version(), ); #[cfg(unix)] diff --git a/src/service/globals/client.rs b/src/service/globals/client.rs index 9b67c0b4..3b608c73 100644 --- a/src/service/globals/client.rs +++ b/src/service/globals/client.rs @@ -2,7 +2,7 @@ use std::{sync::Arc, time::Duration}; use reqwest::redirect; -use crate::{service::globals::resolver, Config, Result}; +use crate::{service::globals::resolver, utils::conduwuit_version, Config, Result}; pub(crate) struct Client { pub(crate) default: reqwest::Client, @@ -87,10 +87,7 @@ impl Client { } fn base(config: &Config) -> Result { - let version = match option_env!("CONDUIT_VERSION_EXTRA") { - Some(extra) => format!("{} ({})", env!("CARGO_PKG_VERSION"), extra), - None => env!("CARGO_PKG_VERSION").to_owned(), - }; + let version = conduwuit_version(); let mut builder = reqwest::Client::builder() .hickory_dns(true) diff --git a/src/utils/clap.rs b/src/utils/clap.rs index 22ff6cab..4c88d836 100644 --- a/src/utils/clap.rs +++ b/src/utils/clap.rs @@ -4,24 +4,11 @@ use std::path::PathBuf; use clap::Parser; -/// Returns the current version of the crate with extra info if supplied -/// -/// Set the environment variable `CONDUIT_VERSION_EXTRA` to any UTF-8 string to -/// include it in parenthesis after the SemVer version. A common value are git -/// commit hashes. -#[allow(clippy::doc_markdown)] -fn version() -> String { - let cargo_pkg_version = env!("CARGO_PKG_VERSION"); - - match option_env!("CONDUIT_VERSION_EXTRA") { - Some(x) => format!("{} ({})", cargo_pkg_version, x), - None => cargo_pkg_version.to_owned(), - } -} +use super::conduwuit_version; /// Commandline arguments #[derive(Parser, Debug)] -#[clap(version = version(), about, long_about = None)] +#[clap(version = conduwuit_version(), about, long_about = None)] pub(crate) struct Args { #[arg(short, long)] /// Optional argument to the path of a conduwuit config TOML file diff --git a/src/utils/mod.rs b/src/utils/mod.rs index 8b988151..1184e181 100644 --- a/src/utils/mod.rs +++ b/src/utils/mod.rs @@ -187,3 +187,19 @@ impl fmt::Display for HtmlEscape<'_> { Ok(()) } } + +/// one true function for returning the conduwuit version with the necessary +/// CONDUWUIT_VERSION_EXTRA env variables used if specified +/// +/// Set the environment variable `CONDUWUIT_VERSION_EXTRA` to any UTF-8 string +/// to include it in parenthesis after the SemVer version. A common value are +/// git commit hashes. +pub(crate) fn conduwuit_version() -> String { + match option_env!("CONDUWUIT_VERSION_EXTRA") { + Some(extra) => format!("{} ({})", env!("CARGO_PKG_VERSION"), extra), + None => match option_env!("CONDUIT_VERSION_EXTRA") { + Some(extra) => format!("{} ({})", env!("CARGO_PKG_VERSION"), extra), + None => env!("CARGO_PKG_VERSION").to_owned(), + }, + } +}