use std::process::Command;
fn main() {
let output = Command::new("git")
.args(["rev-parse", "--short", "HEAD"])
.output()
.unwrap_or_else(|_| {
std::process::Command::new("echo")
.arg("unknown")
.output()
.unwrap()
});
let git_sha = String::from_utf8_lossy(&output.stdout).trim().to_string();
println!("cargo:rustc-env=GIT_SHA={git_sha}");
let branch_output = Command::new("git")
.args(["rev-parse", "--abbrev-ref", "HEAD"])
.output()
.unwrap_or_else(|_| {
std::process::Command::new("echo")
.arg("unknown")
.output()
.unwrap()
});
let git_branch = String::from_utf8_lossy(&branch_output.stdout)
.trim()
.to_string();
println!("cargo:rustc-env=GIT_BRANCH={git_branch}");
let target = std::env::var("TARGET").unwrap_or_else(|_| "unknown".to_string());
println!("cargo:rustc-env=TARGET={target}");
let profile = std::env::var("PROFILE").unwrap_or_else(|_| "unknown".to_string());
println!("cargo:rustc-env=PROFILE={profile}");
let rustc_output = Command::new("rustc")
.args(["--version"])
.output()
.unwrap_or_else(|_| {
std::process::Command::new("echo")
.arg("unknown")
.output()
.unwrap()
});
let rustc_version = String::from_utf8_lossy(&rustc_output.stdout)
.trim()
.to_string();
println!("cargo:rustc-env=RUSTC_VERSION={rustc_version}");
let timestamp = chrono::Utc::now()
.format("%Y-%m-%d %H:%M:%S UTC")
.to_string();
println!("cargo:rustc-env=BUILD_TIMESTAMP={timestamp}");
println!("cargo:rerun-if-changed=.git/HEAD");
println!("cargo:rerun-if-changed=.git/index");
}