From 0b4d329f54fbba2c1a87ba22dab37051548bb8db Mon Sep 17 00:00:00 2001 From: theMackabu <theMackabu@gmail.com> Date: Tue, 14 Nov 2023 12:11:59 -0800 Subject: [PATCH] add git hash and build date --- Cargo.lock | 1 + crates/maid/client/Cargo.toml | 3 +++ crates/maid/client/build.rs | 29 +++++++++++++++++++++++++++++ crates/maid/client/src/cli/mod.rs | 7 +++++++ crates/maid/client/src/main.rs | 3 ++- 5 files changed, 42 insertions(+), 1 deletion(-) create mode 100644 crates/maid/client/build.rs diff --git a/Cargo.lock b/Cargo.lock index 1f4d24f..f5aebb6 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1162,6 +1162,7 @@ name = "maid" version = "1.1.0" dependencies = [ "anyhow", + "chrono", "clap", "clap-verbosity-flag", "colored", diff --git a/crates/maid/client/Cargo.toml b/crates/maid/client/Cargo.toml index 79bf6c5..b120bfb 100644 --- a/crates/maid/client/Cargo.toml +++ b/crates/maid/client/Cargo.toml @@ -42,3 +42,6 @@ clap-verbosity-flag = "2.1.0" notify-debouncer-mini = "0.4.1" human_bytes = { version = "0.4.3", default-features = false } tungstenite = { version = "0.20.1", features = ["native-tls"] } + +[build-dependencies] +chrono = "0.4.23" \ No newline at end of file diff --git a/crates/maid/client/build.rs b/crates/maid/client/build.rs new file mode 100644 index 0000000..ed3cc8c --- /dev/null +++ b/crates/maid/client/build.rs @@ -0,0 +1,29 @@ +use chrono::Datelike; +use std::env; +use std::process::Command; + +struct Env {} +impl Env { + fn git() { + let output = Command::new("git").args(&["rev-parse", "--short=10", "HEAD"]).output().unwrap(); + println!("cargo:rustc-env=GIT_HASH={}", String::from_utf8(output.stdout).unwrap()); + + let output_full = Command::new("git").args(&["rev-parse", "HEAD"]).output().unwrap(); + println!("cargo:rustc-env=GIT_HASH_FULL={}", String::from_utf8(output_full.stdout).unwrap()); + } + + fn date() { + let date = chrono::Utc::now(); + println!("cargo:rustc-env=BUILD_DATE={}-{}-{}", date.year(), date.month(), date.day()); + } + + fn misc() { + println!("cargo:rustc-env=TARGET={}", env::var("TARGET").unwrap()); + } +} + +fn main() { + Env::git(); + Env::date(); + Env::misc(); +} diff --git a/crates/maid/client/src/cli/mod.rs b/crates/maid/client/src/cli/mod.rs index 65c949a..f6e6b60 100644 --- a/crates/maid/client/src/cli/mod.rs +++ b/crates/maid/client/src/cli/mod.rs @@ -11,6 +11,13 @@ use human_bytes::human_bytes; use macros_rs::{crashln, fmtstr, string, ternary}; use std::{env, path::Path, time::Instant}; +pub fn get_version(short: bool) -> String { + return match short { + true => format!("{} {}", env!("CARGO_PKG_NAME"), env!("CARGO_PKG_VERSION")), + false => format!("{} ({} {})", env!("CARGO_PKG_VERSION"), env!("GIT_HASH"), env!("BUILD_DATE")), + }; +} + pub fn info(path: &String) { let values = helpers::maidfile::merge(path); let project_root = parse::file::find_maidfile_root(path); diff --git a/crates/maid/client/src/main.rs b/crates/maid/client/src/main.rs index 55e33be..3f4985a 100644 --- a/crates/maid/client/src/main.rs +++ b/crates/maid/client/src/main.rs @@ -10,10 +10,11 @@ mod task; use clap::{Parser, Subcommand}; use clap_verbosity_flag::Verbosity; +use macros_rs::str; use std::path::Path; #[derive(Parser)] -#[command(version)] +#[command(version = str!(cli::get_version(false)))] struct Cli { /// Run a task defined in maidfile #[arg(default_value = "", hide_default_value = true)] -- GitLab