From 117958d8cda3d8b784b74f6678716b3aa093789b Mon Sep 17 00:00:00 2001 From: Paul Makles Date: Sat, 14 Jan 2023 15:42:06 +0000 Subject: [PATCH] feat: include build information in root api call --- Cargo.lock | 183 +++++++++++++++++++++++++++----- crates/delta/Cargo.toml | 3 + crates/delta/build.rs | 16 +++ crates/delta/src/routes/root.rs | 24 +++++ 4 files changed, 199 insertions(+), 27 deletions(-) create mode 100644 crates/delta/build.rs diff --git a/Cargo.lock b/Cargo.lock index 7cc1c122..d74da317 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -81,6 +81,12 @@ dependencies = [ "winapi 0.3.9", ] +[[package]] +name = "anyhow" +version = "1.0.68" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2cb2f989d18dd141ab8ae82f64d1a8cdd37e0840f73a406896cf5e99502fab61" + [[package]] name = "arrayref" version = "0.3.6" @@ -517,6 +523,9 @@ name = "cc" version = "1.0.73" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2fff2a6927b3bb87f9595d67196a70493f627687a71d87a0d692242c33f58c11" +dependencies = [ + "jobserver", +] [[package]] name = "cfg-if" @@ -606,7 +615,7 @@ dependencies = [ "rand 0.8.5", "sha2", "subtle", - "time 0.3.9", + "time 0.3.17", "version_check", ] @@ -875,6 +884,26 @@ dependencies = [ "syn 1.0.96", ] +[[package]] +name = "enum-iterator" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91a4ec26efacf4aeff80887a175a419493cb6f8b5480d26387eb0bd038976187" +dependencies = [ + "enum-iterator-derive", +] + +[[package]] +name = "enum-iterator-derive" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "828de45d0ca18782232dfb8f3ea9cc428e8ced380eb26a520baaacfc70de39ce" +dependencies = [ + "proc-macro2", + "quote 1.0.18", + "syn 1.0.96", +] + [[package]] name = "env_logger" version = "0.7.1" @@ -1138,6 +1167,18 @@ dependencies = [ "wasi 0.10.0+wasi-snapshot-preview1", ] +[[package]] +name = "getset" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e45727250e75cc04ff2846a66397da8ef2b3db8e40e0cef4df67950a07621eb9" +dependencies = [ + "proc-macro-error", + "proc-macro2", + "quote 1.0.18", + "syn 1.0.96", +] + [[package]] name = "ghash" version = "0.4.4" @@ -1154,6 +1195,19 @@ version = "0.26.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "78cc372d058dcf6d5ecd98510e7fbc9e5aec4d21de70f65fea8fecebcd881bd4" +[[package]] +name = "git2" +version = "0.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2994bee4a3a6a51eb90c218523be382fd7ea09b16380b9312e9dbe955ff7c7d1" +dependencies = [ + "bitflags", + "libc", + "libgit2-sys", + "log", + "url", +] + [[package]] name = "glob" version = "0.3.0" @@ -1514,7 +1568,7 @@ dependencies = [ "generic-array 0.14.5", "schemars", "serde", - "time 0.3.9", + "time 0.3.17", ] [[package]] @@ -1529,6 +1583,15 @@ version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "112c678d4050afce233f4f2852bb2eb519230b3cf12f33585275537d7e41578d" +[[package]] +name = "jobserver" +version = "0.1.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "068b1ee6743e4d11fb9c6a1e6064b3693a1b600e7f5f5988047d98b3dc9fb90b" +dependencies = [ + "libc", +] + [[package]] name = "js-sys" version = "0.3.57" @@ -1590,6 +1653,30 @@ version = "0.2.126" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "349d5a591cd28b49e1d1037471617a32ddcda5731b99419008085f72d5a53836" +[[package]] +name = "libgit2-sys" +version = "0.14.1+1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4a07fb2692bc3593bda59de45a502bb3071659f2c515e28c71e728306b038e17" +dependencies = [ + "cc", + "libc", + "libz-sys", + "pkg-config", +] + +[[package]] +name = "libz-sys" +version = "1.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9702761c3935f8cc2f101793272e202c72b99da8f4224a19ddcf1279a6450bbf" +dependencies = [ + "cc", + "libc", + "pkg-config", + "vcpkg", +] + [[package]] name = "linked-hash-map" version = "0.5.4" @@ -1914,6 +2001,15 @@ dependencies = [ "minimal-lexical", ] +[[package]] +name = "ntapi" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bc51db7b362b205941f71232e56c625156eb9a929f8cf74a428fd5bc094a4afc" +dependencies = [ + "winapi 0.3.9", +] + [[package]] name = "num-integer" version = "0.1.45" @@ -1964,15 +2060,6 @@ dependencies = [ "syn 1.0.96", ] -[[package]] -name = "num_threads" -version = "0.1.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2819ce041d2ee131036f4fc9d6ae7ae125a3a40e97ba64d04fe799ad9dabbb44" -dependencies = [ - "libc", -] - [[package]] name = "object" version = "0.28.4" @@ -2765,6 +2852,7 @@ dependencies = [ "ulid 0.4.1", "url", "validator 0.14.0", + "vergen", ] [[package]] @@ -2881,7 +2969,7 @@ dependencies = [ "serde_json", "state", "tempfile", - "time 0.3.9", + "time 0.3.17", "tokio 1.18.2", "tokio-stream", "tokio-util 0.7.2", @@ -2953,7 +3041,7 @@ dependencies = [ "smallvec", "stable-pattern", "state", - "time 0.3.9", + "time 0.3.17", "tokio 1.18.2", "uncased", ] @@ -3069,9 +3157,9 @@ dependencies = [ [[package]] name = "rustversion" -version = "1.0.6" +version = "1.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2cc38e8fa666e2de3c4aba7edeb5ffc5246c1c2ed0e3d17e560aeeba736b23f" +checksum = "5583e89e108996506031660fe09baa5011b9dd0341b89029313006d1fb508d70" [[package]] name = "ryu" @@ -3261,7 +3349,7 @@ dependencies = [ "serde", "serde_json", "thiserror", - "time 0.3.9", + "time 0.3.17", "url", "uuid", ] @@ -3545,6 +3633,20 @@ dependencies = [ "unicode-xid 0.0.4", ] +[[package]] +name = "sysinfo" +version = "0.27.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c215311383d25d03753375c53ab9fad8fc0cf46953c409211e065edeabf577ee" +dependencies = [ + "cfg-if 1.0.0", + "core-foundation-sys", + "libc", + "ntapi", + "once_cell", + "winapi 0.3.9", +] + [[package]] name = "take_mut" version = "0.2.2" @@ -3576,18 +3678,18 @@ dependencies = [ [[package]] name = "thiserror" -version = "1.0.31" +version = "1.0.38" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd829fe32373d27f76265620b5309d0340cb8550f523c1dda251d6298069069a" +checksum = "6a9cd18aa97d5c45c6603caea1da6628790b37f7a34b6ca89522331c5180fed0" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.31" +version = "1.0.38" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0396bc89e626244658bef819e22d0cc459e795a5ebe878e6ec336d1674a8d79a" +checksum = "1fb327af4685e4d03fa8cbcf1716380da910eeb2bb8be417e7f9fd3fb164f36f" dependencies = [ "proc-macro2", "quote 1.0.18", @@ -3616,21 +3718,30 @@ dependencies = [ [[package]] name = "time" -version = "0.3.9" +version = "0.3.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c2702e08a7a860f005826c6815dcac101b19b5eb330c27fe4a5928fec1d20ddd" +checksum = "a561bf4617eebd33bca6434b988f39ed798e527f51a1e797d0ee4f61c0a38376" dependencies = [ "itoa 1.0.2", - "libc", - "num_threads", + "serde", + "time-core", "time-macros", ] [[package]] -name = "time-macros" -version = "0.2.4" +name = "time-core" +version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42657b1a6f4d817cda8e7a0ace261fe0cc946cf3a80314390b22cc61ae080792" +checksum = "2e153e1f1acaef8acc537e68b44906d2db6436e2b35ac2c6b42640fff91f00fd" + +[[package]] +name = "time-macros" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d967f99f534ca7e495c575c62638eebc2898a8c84c119b89e250477bc4ba16b2" +dependencies = [ + "time-core", +] [[package]] name = "tinyvec" @@ -4204,6 +4315,24 @@ version = "0.2.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" +[[package]] +name = "vergen" +version = "7.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "571b69f690c855821462709b6f41d42ceccc316fbd17b60bd06d06928cfe6a99" +dependencies = [ + "anyhow", + "cfg-if 1.0.0", + "enum-iterator", + "getset", + "git2", + "rustc_version 0.4.0", + "rustversion", + "sysinfo", + "thiserror", + "time 0.3.17", +] + [[package]] name = "version_check" version = "0.9.4" diff --git a/crates/delta/Cargo.toml b/crates/delta/Cargo.toml index fbb163d4..c59b7b50 100644 --- a/crates/delta/Cargo.toml +++ b/crates/delta/Cargo.toml @@ -61,3 +61,6 @@ rocket_okapi = { git = "https://github.com/insertish/okapi", rev = "a1048d0c8cd7 # quark revolt-quark = { path = "../quark" } + +[build-dependencies] +vergen = "7.5.0" diff --git a/crates/delta/build.rs b/crates/delta/build.rs new file mode 100644 index 00000000..e71dcd55 --- /dev/null +++ b/crates/delta/build.rs @@ -0,0 +1,16 @@ +use vergen::{vergen, Config}; + +use std::process::Command; + +fn main() { + if let Ok(output) = Command::new("git") + .args(["config", "--get", "remote.origin.url"]) + .output() + { + if let Ok(git_origin) = String::from_utf8(output.stdout) { + println!("cargo:rustc-env=GIT_ORIGIN_URL={}", git_origin); + } + } + + vergen(Config::default()).unwrap(); +} diff --git a/crates/delta/src/routes/root.rs b/crates/delta/src/routes/root.rs index 90d174e6..e44ae638 100644 --- a/crates/delta/src/routes/root.rs +++ b/crates/delta/src/routes/root.rs @@ -54,6 +54,21 @@ pub struct RevoltFeatures { pub voso: VoiceFeature, } +/// # Build Information +#[derive(Serialize, JsonSchema, Debug)] +pub struct BuildInformation { + /// Commit Hash + pub commit_sha: String, + /// Commit Timestamp + pub commit_timestamp: String, + /// Git Semver + pub semver: String, + /// Git Origin URL + pub origin_url: String, + /// Build Timestamp + pub timestamp: String, +} + /// # Server Configuration #[derive(Serialize, JsonSchema, Debug)] pub struct RevoltConfig { @@ -67,6 +82,8 @@ pub struct RevoltConfig { pub app: String, /// Web Push VAPID public key pub vapid: String, + /// Build information + pub build: BuildInformation, } /// # Query Node @@ -101,6 +118,13 @@ pub async fn root() -> Result> { ws: EXTERNAL_WS_URL.to_string(), app: APP_URL.to_string(), vapid: VAPID_PUBLIC_KEY.to_string(), + build: BuildInformation { + commit_sha: env!("VERGEN_GIT_SHA").to_string(), + commit_timestamp: env!("VERGEN_GIT_COMMIT_TIMESTAMP").to_string(), + semver: env!("VERGEN_GIT_SEMVER").to_string(), + origin_url: env!("GIT_ORIGIN_URL", "").to_string(), + timestamp: env!("VERGEN_BUILD_TIMESTAMP").to_string(), + }, })) }