#![allow(clippy::panic, clippy::expect_used)]
use std::env;
use std::fs;
use std::path::Path;
fn main() {
let version = env::var("CARGO_PKG_VERSION").unwrap_or_else(|_| "unknown".to_string());
let build_commit = env::var("DETRIX_BUILD_COMMIT")
.or_else(|_| env::var("GIT_COMMIT"))
.or_else(|_| env::var("CI_COMMIT_SHA"))
.or_else(|_| env::var("GITHUB_SHA"))
.unwrap_or_else(|_| "unknown".to_string());
let build_tag = env::var("DETRIX_BUILD_TAG")
.or_else(|_| env::var("GIT_TAG"))
.or_else(|_| env::var("CI_COMMIT_TAG"))
.or_else(|_| {
if env::var("GITHUB_REF_TYPE").as_deref() == Ok("tag") {
env::var("GITHUB_REF_NAME")
} else {
Err(env::VarError::NotPresent)
}
})
.unwrap_or_else(|_| version.clone());
let out_dir = env::var("OUT_DIR").expect("OUT_DIR not set");
let dest_path = Path::new(&out_dir).join("build_info.rs");
let build_info = format!(
r#"/// Client version from Cargo.toml
pub const VERSION: &str = {:?};
/// Git commit SHA at build time (or "unknown")
pub const BUILD_COMMIT: &str = {:?};
/// Build tag/version (or VERSION if not set)
pub const BUILD_TAG: &str = {:?};"#,
version, build_commit, build_tag
);
fs::write(&dest_path, build_info).expect("Could not write build_info.rs");
println!("cargo:rerun-if-changed=build.rs");
println!("cargo:rerun-if-env-changed=DETRIX_BUILD_COMMIT");
println!("cargo:rerun-if-env-changed=GIT_COMMIT");
println!("cargo:rerun-if-env-changed=CI_COMMIT_SHA");
println!("cargo:rerun-if-env-changed=GITHUB_SHA");
println!("cargo:rerun-if-env-changed=DETRIX_BUILD_TAG");
println!("cargo:rerun-if-env-changed=GIT_TAG");
println!("cargo:rerun-if-env-changed=CI_COMMIT_TAG");
println!("cargo:rerun-if-env-changed=GITHUB_REF_NAME");
println!("cargo:rerun-if-env-changed=GITHUB_REF_TYPE");
}