use std::process::Command;
fn git(args: &[&str]) -> Option<String> {
Command::new("git")
.args(args)
.output()
.ok()
.filter(|o| o.status.success())
.and_then(|o| String::from_utf8(o.stdout).ok())
.map(|s| s.trim().to_string())
}
fn main() {
let commit = git(&["rev-parse", "HEAD"]).unwrap_or_else(|| "unknown".to_string());
let dirty = git(&["status", "--porcelain"])
.map(|s| !s.is_empty())
.unwrap_or(false);
let stamp = if commit != "unknown" && dirty {
format!("{commit}-dirty")
} else {
commit
};
println!("cargo:rustc-env=TILEZZ_GIT_COMMIT={stamp}");
println!("cargo:rerun-if-changed=.git/HEAD");
println!("cargo:rerun-if-changed=.git/refs/heads");
println!("cargo:rerun-if-changed=.git/index");
}