fixup! squash! fixup! Show commit hash in version when built from source

This commit is contained in:
Cole Helbling 2020-03-31 13:39:18 -07:00
parent f4d237d07a
commit f9f144e1ef
No known key found for this signature in database
GPG Key ID: B37E0F2371016A4C
2 changed files with 11 additions and 32 deletions

View File

@ -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);
}

View File

@ -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),