diff --git a/build.rs b/build.rs index a0a4a89..f3f7800 100644 --- a/build.rs +++ b/build.rs @@ -1,35 +1,17 @@ -use std::process::Command; - fn main() { - let status_code = Command::new("git") - .args(&["describe", "--tags", "--exact-match", "--dirty"]) - .status() + let git_describe = std::process::Command::new("git") + .args(&["describe", "--tags", "--broken"]) + .output() .ok() - .and_then(|status| status.code()); + .and_then(|proc| String::from_utf8(proc.stdout).ok()); - let is_tagged = match status_code { - Some(code) => code == 0, - None => false, - }; + let mut version_info = format!("v{}-unknown", env!("CARGO_PKG_VERSION")); - // If this is a tagged commit (a release), we don't want to include the - // commit hash in the version output. - let revision = if is_tagged { - String::new() - } else { - let mut hash = Command::new("git") - .args(&["rev-parse", "--short", "HEAD"]) - .output() - .ok() - .and_then(|proc| String::from_utf8(proc.stdout).ok()) - .unwrap_or_default(); - - if !hash.is_empty() { - hash = format!("-{}", hash); + if let Some(description) = git_describe { + if !description.is_empty() { + version_info = description; } + } - hash - }; - - println!("cargo:rustc-env=GIT_HASH={}", revision); + println!("cargo:rustc-env=ZOXIDE_VERSION={}", version_info); } diff --git a/src/main.rs b/src/main.rs index 63e617e..012f85c 100644 --- a/src/main.rs +++ b/src/main.rs @@ -8,10 +8,7 @@ use anyhow::Result; use structopt::StructOpt; #[derive(Debug, StructOpt)] -#[structopt( - about = "A cd command that learns your habits", - version = concat!(env!("CARGO_PKG_VERSION"), env!("GIT_HASH")) -)] +#[structopt(about = "A cd command that learns your habits", version = env!("ZOXIDE_VERSION"))] enum Zoxide { Add(subcommand::Add), Import(subcommand::Import),