use std::process::Command; fn main() { let mut version = String::from(env!("CARGO_PKG_VERSION")); if let Some(commit_hash) = commit_hash() { version = format!("{version} ({commit_hash})"); } println!("cargo:rustc-env=VERSION={version}"); } fn commit_hash() -> Option { Command::new("git") .args(["rev-parse", "--short", "HEAD"]) .output() .ok() .filter(|output| output.status.success()) .and_then(|output| String::from_utf8(output.stdout).ok()) .map(|hash| hash.trim().into()) }