use std::process::Command;
fn main() {
println!("cargo:rerun-if-changed=../.git/HEAD");
println!("cargo:rerun-if-changed=../.git/refs/");
let version = Command::new("git")
.args(["describe", "--tags", "--always"])
.output()
.ok()
.filter(|o| o.status.success())
.and_then(|o| String::from_utf8(o.stdout).ok())
.map(|desc| {
let desc = desc.trim();
let desc = desc.strip_prefix('v').unwrap_or(desc);
if let Some(idx) = desc.find('-') {
let base = &desc[..idx];
let rest = &desc[idx + 1..];
let parts: Vec<&str> = rest.splitn(2, '-').collect();
if parts.len() == 2 {
let distance = parts[0];
let node = parts[1].trim_start_matches('g');
format!("{base}+{distance}.g{node}")
} else {
desc.to_string()
}
} else {
desc.to_string()
}
})
.unwrap_or_else(|| env!("CARGO_PKG_VERSION").to_string());
println!("cargo:rustc-env=GIT_VERSION={version}");
}