use std::env;
use std::process::Command;
fn main() {
let version = env::var("ORCH_BUILD_VERSION")
.map(|v| v.trim_start_matches('v').to_string())
.ok()
.filter(|s| !s.is_empty())
.or_else(git_tag_version)
.unwrap_or_else(|| env!("CARGO_PKG_VERSION").to_string());
println!("cargo:rustc-env=ORCH_VERSION={version}");
println!("cargo:rerun-if-env-changed=ORCH_BUILD_VERSION");
}
fn git_tag_version() -> Option<String> {
let output = Command::new("git")
.args(["describe", "--tags", "--abbrev=0"])
.output()
.ok()?;
if !output.status.success() {
return None;
}
let tag = String::from_utf8(output.stdout).ok()?;
let version = tag.trim().trim_start_matches('v').to_string();
if version.is_empty() {
None
} else {
Some(version)
}
}