use std::process::Command;
fn main() {
let output = Command::new("git")
.args(["rev-parse", "--short", "HEAD"])
.output();
let git_hash = match output {
Ok(output) if output.status.success() => {
String::from_utf8(output.stdout)
.unwrap_or_else(|_| "unknown".to_string())
.trim()
.to_string()
}
_ => "unknown".to_string(),
};
let dirty = Command::new("git")
.args(["status", "--porcelain"])
.output()
.map(|o| !o.stdout.is_empty())
.unwrap_or(false);
let git_hash = if dirty {
format!("{}-dirty", git_hash)
} else {
git_hash
};
println!("cargo:rustc-env=GIT_COMMIT_HASH={}", git_hash);
println!("cargo:rerun-if-changed=.git/HEAD");
println!("cargo:rerun-if-changed=.git/index");
}