use std::process::Command; fn main() { let git_description = get_git_description().unwrap_or_else(|_| env!("CARGO_PKG_VERSION").to_string()); println!("cargo:rustc-env=GIT_DESCRIPTION={}", git_description); } fn get_git_description() -> Result { let output = Command::new("git").args(["describe", "--tags", "--always"]).output()?; if output.status.success() { let description = String::from_utf8(output.stdout) .expect("Failed to read git command output") .trim() .to_string(); Ok(description) } else { Err(std::io::Error::new(std::io::ErrorKind::Other, "Git command failed")) } }