use std::process::Command;
fn main() {
println!("cargo:rerun-if-changed=.git/HEAD");
println!("cargo:rerun-if-changed=.git/index");
println!("cargo:rerun-if-env-changed=POLARANGES_BENCH_VERSION_DESCRIPTION");
let git_description = git_output(&["log", "-1", "--format=%h %s"])
.unwrap_or_else(|| "unknown git revision".to_string());
let dirty = git_output(&["status", "--short"])
.map(|value| !value.trim().is_empty())
.unwrap_or(false);
println!("cargo:rustc-env=POLARANGES_BUILD_GIT_DESCRIPTION={git_description}");
println!(
"cargo:rustc-env=POLARANGES_BUILD_GIT_DIRTY={}",
if dirty { "dirty" } else { "clean" }
);
}
fn git_output(args: &[&str]) -> Option<String> {
let output = Command::new("git").args(args).output().ok()?;
if !output.status.success() {
return None;
}
Some(String::from_utf8(output.stdout).ok()?.trim().to_string())
}