42 lines
1.3 KiB
Rust
42 lines
1.3 KiB
Rust
use std::process::Command;
|
|
|
|
fn main() {
|
|
// Git commit hash
|
|
let git_commit = Command::new("git")
|
|
.args(["rev-parse", "--short", "HEAD"])
|
|
.output()
|
|
.ok()
|
|
.and_then(|o| String::from_utf8(o.stdout).ok())
|
|
.map(|s| s.trim().to_string())
|
|
.filter(|s| !s.is_empty())
|
|
.unwrap_or_else(|| "unknown".to_string());
|
|
|
|
// Build timestamp (UTC)
|
|
let build_date = Command::new("date")
|
|
.args(["-u", "+%Y-%m-%dT%H:%M:%SZ"])
|
|
.output()
|
|
.ok()
|
|
.and_then(|o| String::from_utf8(o.stdout).ok())
|
|
.map(|s| s.trim().to_string())
|
|
.filter(|s| !s.is_empty())
|
|
.unwrap_or_else(|| "unknown".to_string());
|
|
|
|
// Rust version
|
|
let rust_version = Command::new("rustc")
|
|
.arg("--version")
|
|
.output()
|
|
.ok()
|
|
.and_then(|o| String::from_utf8(o.stdout).ok())
|
|
.map(|s| s.trim().to_string())
|
|
.filter(|s| !s.is_empty())
|
|
.unwrap_or_else(|| "unknown".to_string());
|
|
|
|
println!("cargo:rustc-env=GIT_COMMIT={git_commit}");
|
|
println!("cargo:rustc-env=BUILD_DATE={build_date}");
|
|
println!("cargo:rustc-env=RUST_VERSION={rust_version}");
|
|
|
|
// Re-run if git HEAD changes
|
|
println!("cargo:rerun-if-changed=.git/HEAD");
|
|
println!("cargo:rerun-if-changed=.git/refs/heads");
|
|
}
|