//! Stamp the commit this binary was built from.
//!
//! Deliberately records ONLY the commit — no dirty-tree flag. Cargo will not
//! re-run a build script because another crate's source changed, so a
//! compiled-in "clean" claim can be stale and is therefore not a safeguard.
//! (Verified on the Blaze host: editing the adapter and rebuilding left its
//! flag reading clean.)
//!
//! The authoritative checks run at launch, in `scripts/verify-build-identity.sh`,
//! which compares this stamp against the checkout's real HEAD and inspects the
//! working tree as it is at that moment.

use std::process::Command;

fn git(args: &[&str]) -> Option<String> {
    let out = Command::new("git").args(args).output().ok()?;
    out.status
        .success()
        .then(|| String::from_utf8_lossy(&out.stdout).trim().to_string())
}

fn main() {
    let commit = git(&["rev-parse", "--short=7", "HEAD"]).unwrap_or_else(|| "unknown".into());
    println!("cargo:rustc-env=OPENFUT_BUILD_COMMIT={commit}");

    // Committing updates refs/heads/<branch>, not the HEAD file, so watching
    // HEAD alone leaves the stamp a commit behind.
    for p in ["../.git/HEAD", "../.git/index"] {
        if std::path::Path::new(p).exists() {
            println!("cargo:rerun-if-changed={p}");
        }
    }
    if let Some(rf) = git(&["symbolic-ref", "-q", "HEAD"]) {
        let path = format!("../.git/{rf}");
        if std::path::Path::new(&path).exists() {
            println!("cargo:rerun-if-changed={path}");
        }
    }
}
