diff --git a/CHANGELOG.md b/CHANGELOG.md index 9d80f2f..0c7b1ae 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -12,6 +12,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Special color for unavailable items - Changelog with all the relevant user-facing changes to the project - `info` command line subcommand to show platform specific information +- Append Git commit hash to version string ### Changed diff --git a/build.rs b/build.rs new file mode 100644 index 0000000..6a17b0f --- /dev/null +++ b/build.rs @@ -0,0 +1,19 @@ +use std::process::Command; + +fn main() { + let mut version = String::from(env!("CARGO_PKG_VERSION")); + if let Some(commit_hash) = commit_hash() { + version = format!("{version} ({commit_hash})"); + } + println!("cargo:rustc-env=VERSION={version}"); +} + +fn commit_hash() -> Option { + Command::new("git") + .args(["rev-parse", "--short", "HEAD"]) + .output() + .ok() + .filter(|output| output.status.success()) + .and_then(|output| String::from_utf8(output.stdout).ok()) + .map(|hash| hash.trim().into()) +} diff --git a/src/lib.rs b/src/lib.rs index 565bbf5..16c8e23 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -15,7 +15,7 @@ pub fn program_arguments() -> clap::Command { }; clap::Command::new("ncspot") - .version(env!("CARGO_PKG_VERSION")) + .version(env!("VERSION")) .author(AUTHOR) .about("cross-platform ncurses Spotify client") .after_help(backends)