stratus/infra/
build_info.rs1use serde_json::json;
2
3use crate::alias::JsonValue;
4
5pub const BUILD_HOSTNAME: &str = env!("BUILD_HOSTNAME");
9pub const BUILD_OPENSSL_VERSION: &str = env!("BUILD_OPENSSL_VERSION");
10pub const BUILD_GLIBC_VERSION: &str = env!("BUILD_GLIBC_VERSION");
11pub const BUILD_TIMESTAMP: &str = env!("VERGEN_BUILD_TIMESTAMP");
12
13pub const CARGO_DEBUG: &str = env!("VERGEN_CARGO_DEBUG");
14pub const CARGO_FEATURES: &str = env!("VERGEN_CARGO_FEATURES");
15
16pub const GIT_COMMIT: &str = env!("VERGEN_GIT_SHA");
17pub const GIT_COMMIT_TIMESTAMP: &str = env!("VERGEN_GIT_COMMIT_TIMESTAMP");
18pub const GIT_COMMIT_MESSAGE: &str = env!("VERGEN_GIT_COMMIT_MESSAGE");
19pub const GIT_COMMIT_AUTHOR: &str = env!("VERGEN_GIT_COMMIT_AUTHOR_NAME");
20pub const GIT_BRANCH: &str = env!("VERGEN_GIT_BRANCH");
21pub const GIT_DESCRIBE: &str = env!("VERGEN_GIT_DESCRIBE");
22pub const GIT_REPO_URL: &str = env!("VERGEN_GIT_REPO_URL");
23
24pub const RUST_VERSION: &str = env!("VERGEN_RUSTC_SEMVER");
25pub const RUST_CHANNEL: &str = env!("VERGEN_RUSTC_CHANNEL");
26pub const RUST_TARGET: &str = env!("VERGEN_RUSTC_HOST_TRIPLE");
27
28pub const SYSTEM_VERSION: &str = env!("VERGEN_SYSINFO_OS_VERSION");
29pub const SYSTEM_USER: &str = env!("VERGEN_SYSINFO_USER");
30
31const VERSION_WITH_BRANCH: &str = const_format::formatcp!("{GIT_BRANCH}::{GIT_COMMIT}");
32const VERSION_WITH_DESCRIBE: &str = const_format::formatcp!("{GIT_DESCRIBE}::{GIT_COMMIT}");
33
34pub fn service_name() -> String {
38 format!("stratus-{}", binary_name())
39}
40
41pub fn service_name_with_version() -> String {
43 format!("{}::{}", service_name(), version())
44}
45
46pub fn binary_name() -> String {
48 let binary = std::env::current_exe().unwrap();
49 let binary_basename = binary.file_name().unwrap().to_str().unwrap().to_lowercase();
50
51 if binary_basename.starts_with("test_") {
52 "tests".to_string()
53 } else {
54 binary_basename
55 }
56}
57
58pub fn version() -> &'static str {
60 if GIT_BRANCH == "HEAD" { VERSION_WITH_DESCRIBE } else { VERSION_WITH_BRANCH }
61}
62
63pub fn as_json() -> JsonValue {
65 json!(
66 {
67 "build": {
68 "service_name": service_name(),
69 "binary_name": binary_name(),
70 "version": version(),
71 "service_name_with_version": service_name_with_version(),
72 "timestamp": BUILD_TIMESTAMP,
73 "hostname": BUILD_HOSTNAME,
74 "openssl_version": BUILD_OPENSSL_VERSION,
75 "glibc_version": BUILD_GLIBC_VERSION,
76 },
77 "cargo": {
78 "debug": CARGO_DEBUG,
79 "features": CARGO_FEATURES,
80 },
81 "git": {
82 "commit": GIT_COMMIT,
83 "commit_timestamp": GIT_COMMIT_TIMESTAMP,
84 "commit_message": GIT_COMMIT_MESSAGE,
85 "commit_author": GIT_COMMIT_AUTHOR,
86 "branch": GIT_BRANCH,
87 "describe": GIT_DESCRIBE,
88 "repo_url": GIT_REPO_URL,
89 },
90 "rust": {
91 "version": RUST_VERSION,
92 "channel": RUST_CHANNEL,
93 "target": RUST_TARGET,
94 },
95 "system": {
96 "version": SYSTEM_VERSION,
97 "user": SYSTEM_USER,
98 }
99 }
100 )
101}