//! Build script for `nbd`. //! //! Captures the short git SHA at compile time and emits it as the //! `GIT_SHORT_SHA` environment variable, making it available via //! `env!("GIT_SHORT_SHA")` in the crate source. //! //! Falls back to `"unknown"` when git is unavailable (e.g. a clean Nix //! sandbox build where `.git/` is not present). fn main() { // Capture the short git SHA at build time. let sha = std::process::Command::new("git") .args(["rev-parse", "--short", "HEAD"]) .output() .ok() .and_then(|o| { if o.status.success() { Some(o.stdout) } else { None } }) .and_then(|b| String::from_utf8(b).ok()) .map(|s| s.trim().to_string()) .unwrap_or_else(|| "unknown".to_string()); println!("cargo:rustc-env=GIT_SHORT_SHA={sha}"); // Re-run whenever HEAD or any ref changes (new commits, branch switches). println!("cargo:rerun-if-changed=.git/HEAD"); println!("cargo:rerun-if-changed=.git/refs"); }