Files

25 lines
1.0 KiB
Rust

//! 构建脚本:取构建期 git 短哈希注入二进制(`GIT_COMMIT` 环境变量)。
//!
//! 哈希供 `--version` 自报,作为二进制新鲜度自证锚点(与 `git rev-parse --short HEAD`
//! 对照即可判定二进制是否落后于 HEAD)。无 git 环境(CI、解压源码)哈希缺省
//! `unknown`,构建不失败。
fn main() {
// 构建脚本或源码变化时重跑,保持哈希与源码同步。
println!("cargo:rerun-if-changed=build.rs");
println!("cargo:rerun-if-changed=src");
println!("cargo:rerun-if-changed=Cargo.toml");
// git 缺失或无提交时容缺,哈希缺省 "unknown"。
let hash = std::process::Command::new("git")
.args(["rev-parse", "--short", "HEAD"])
.output()
.ok()
.filter(|o| o.status.success())
.map(|o| String::from_utf8_lossy(&o.stdout).trim().to_string())
.filter(|h| !h.is_empty())
.unwrap_or_else(|| "unknown".to_string());
println!("cargo:rustc-env=GIT_COMMIT={hash}");
}