#[allow(unused)]
mod build {
include!(concat!(env!("OUT_DIR"), "/built.rs"));
}
pub use self::build::{
BUILT_TIME_UTC, CFG_ENV, CFG_OS, CFG_TARGET_ARCH, CI_PLATFORM, DEBUG,
GIT_COMMIT_HASH, NUM_JOBS, PKG_AUTHORS, PKG_DESCRIPTION, PKG_LICENSE, PKG_NAME,
PKG_REPOSITORY, PKG_VERSION, RUSTC_VERSION, TARGET,
};
use std::sync::LazyLock;
static VERSION_INFO: LazyLock<String> = LazyLock::new(|| {
let mut version = format!("v{PKG_VERSION}");
if let Some(commit_hash) = *GIT_COMMIT_HASH_SHORT {
str_write!(&mut version, " [{commit_hash}]");
}
version
});
pub static VERSION: LazyLock<String> =
LazyLock::new(|| format!("{PKG_NAME} {}", *VERSION_INFO));
pub static FULL_VERSION: LazyLock<String> = LazyLock::new(|| {
let mut version = format!("{}\n\nCompiled:\n", *VERSION_INFO);
str_writeln!(&mut version, "* across {NUM_JOBS} threads");
str_writeln!(&mut version, "* by {RUSTC_VERSION}");
str_writeln!(&mut version, "* for {TARGET}");
str_writeln!(&mut version, "* on {BUILT_TIME_UTC}");
version
});
pub static FULL_VERSION_WITH_NAME: LazyLock<String> =
LazyLock::new(|| format!("{PKG_NAME} {}", *FULL_VERSION));
pub static GIT_COMMIT_HASH_SHORT: LazyLock<Option<&'static str>> =
LazyLock::new(|| GIT_COMMIT_HASH.map(|s| &s[..8]));
#[test]
fn info() {
assert!(VERSION.starts_with(PKG_NAME));
assert!(VERSION.ends_with(&*VERSION_INFO));
if let Some(hash) = *GIT_COMMIT_HASH_SHORT {
assert_eq!(hash.len(), 8);
}
}