pub const COMMIT: &str = env!("TIX_BUILD_COMMIT");
pub fn print() {
println!("tix {}", env!("CARGO_PKG_VERSION"));
println!("commit: {}", COMMIT);
println!("built: {}", built_at());
}
fn built_at() -> String {
let raw = env!("TIX_BUILD_UNIX");
let Ok(seconds) = raw.parse::<i64>() else {
return raw.to_string();
};
match time::OffsetDateTime::from_unix_timestamp(seconds) {
Ok(at) => format!(
"{:04}-{:02}-{:02}T{:02}:{:02}:{:02}Z",
at.year(),
at.month() as u8,
at.day(),
at.hour(),
at.minute(),
at.second()
),
Err(_) => raw.to_string(),
}
}
#[cfg(test)]
mod tests {
#[allow(clippy::wildcard_imports)]
use super::*;
#[test]
fn the_commit_stamp_is_never_empty() {
assert_ne!(COMMIT.trim(), "");
}
#[test]
fn the_build_time_renders_as_an_iso_utc_timestamp() {
let rendered = built_at();
assert_eq!(rendered.len(), 20, "unexpected stamp: {rendered}");
assert!(rendered.ends_with('Z'), "unexpected stamp: {rendered}");
let (date, time) = rendered.split_once('T').expect("an ISO stamp has a `T`");
assert_eq!(date.split('-').count(), 3, "unexpected date: {date}");
assert_eq!(time.split(':').count(), 3, "unexpected time: {time}");
assert!(
rendered
.chars()
.all(|c| c.is_ascii_digit() || "T-:Z".contains(c)),
"unexpected stamp: {rendered}"
);
}
#[test]
fn the_crate_version_is_semver_shaped() {
let version = env!("CARGO_PKG_VERSION");
let parts: Vec<&str> = version.split('.').collect();
assert_eq!(parts.len(), 3, "expected a semver version, got {version}");
assert!(
parts.iter().all(|part| part.parse::<u64>().is_ok()),
"expected numeric components, got {version}"
);
}
}