use std::{env, path::Path, process::Command, time::SystemTime};
extern crate chrono;
use chrono::{offset::Utc, DateTime};
fn main() {
let hdk_hash: String = env::var("HDK_HASH")
.ok()
.or_else(|| {
env::var("out").ok().and_then(|out| {
out.split('/').last().and_then(|basename| {
basename
.split('-')
.nth(0)
.and_then(|hash| Some(hash.to_string()))
})
})
})
.unwrap_or_else(|| "00000000000000000000000000000000".to_string());
println!("cargo:rustc-env=HDK_HASH={}", hdk_hash);
let hdk_version: String = env::var("HDK_VERSION")
.or_else(|_| env::var("CARGO_PKG_VERSION"))
.expect("Cannot deduce HDK_VERSION; ensure HDK_VERSION or CARGO_PKG_VERSION (via Cargo.toml [package] version) is set");
assert!(
hdk_version.len() > 0,
"Invalid HDK_VERSION: {:?}",
&hdk_version
);
println!("cargo:rustc-env=HDK_VERSION={}", &hdk_version);
if Path::new("../../.git/HEAD").exists() {
println!("cargo:rerun-if-changed=../../.git/HEAD");
}
if let Ok(output) = Command::new("git").args(&["rev-parse", "HEAD"]).output() {
let git_hash = String::from_utf8(output.stdout).unwrap();
println!("cargo:rustc-env=GIT_HASH={}", git_hash);
}
if let Ok(output) = Command::new("git")
.args(&["rev-parse", "--abbrev-ref", "HEAD"])
.output()
{
let git_branch = String::from_utf8(output.stdout).unwrap();
println!("cargo:rustc-env=GIT_BRANCH={}", git_branch);
}
let system_time = SystemTime::now();
let datetime: DateTime<Utc> = system_time.into();
println!(
"cargo:rustc-env=BUILD_DATE={}",
datetime.format("%Y-%m-%d %T")
);
}