diff --git a/Cargo.lock b/Cargo.lock index 5e28bd60..bc3b704f 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1419,6 +1419,26 @@ dependencies = [ "cfg-if 1.0.0", ] +[[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", + "syn", +] + [[package]] name = "env_logger" version = "0.8.4" @@ -2049,6 +2069,18 @@ dependencies = [ "wasm-bindgen", ] +[[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", + "syn", +] + [[package]] name = "git-actor" version = "0.6.0" @@ -4271,11 +4303,11 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.37" +version = "1.0.43" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec757218438d5fda206afc041538b2f6d889286160d649a86a24d37e1235afd1" +checksum = "0a2ca2c61bc9f3d74d2886294ab7b9853abd9c1ad903a3ac7815c58989bb7bab" dependencies = [ - "unicode-xid", + "unicode-ident", ] [[package]] @@ -4393,7 +4425,7 @@ name = "rad-anchor" version = "0.6.2" dependencies = [ "anyhow", - "coins-bip32 0.3.0", + "coins-bip32 0.6.0", "colored 1.9.3", "ethers", "lexopt", @@ -4748,6 +4780,7 @@ dependencies = [ "radicle-git-helpers", "radicle-terminal", "url", + "vergen", ] [[package]] @@ -5256,6 +5289,12 @@ dependencies = [ "base64 0.13.0", ] +[[package]] +name = "rustversion" +version = "1.0.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97477e48b4cf8603ad5f7aaf897467cf42ab4218a38ef76fb14c2d6773a6d6a8" + [[package]] name = "rusty-fork" version = "0.3.0" @@ -5759,13 +5798,13 @@ checksum = "6bdef32e8150c2a081110b42772ffe7d7c9032b606bc226c8260fd97e0976601" [[package]] name = "syn" -version = "1.0.92" +version = "1.0.99" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ff7c592601f11445996a06f8ad0c27f094a58857c2f89e97974ab9235b92c52" +checksum = "58dbef6ec655055e20b86b15a8cc6d439cca19b667537ac6a1369572d151ab13" dependencies = [ "proc-macro2", "quote", - "unicode-xid", + "unicode-ident", ] [[package]] @@ -5864,6 +5903,7 @@ version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c2702e08a7a860f005826c6815dcac101b19b5eb330c27fe4a5928fec1d20ddd" dependencies = [ + "itoa 1.0.1", "libc", "num_threads", ] @@ -6060,6 +6100,12 @@ version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "099b7128301d285f79ddd55b9a83d5e6b9e97c92e0ea0daebee7263e932de992" +[[package]] +name = "unicode-ident" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c4f5b37a154999a8f3f98cc23a628d850e154479cd94decf3414696e12e31aaf" + [[package]] name = "unicode-normalization" version = "0.1.19" @@ -6167,6 +6213,22 @@ version = "0.2.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" +[[package]] +name = "vergen" +version = "7.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f10de320f0fe3f21913dabbfcbced6867bbe47a6b1a5db830e37df3a50279bd0" +dependencies = [ + "anyhow", + "cfg-if 1.0.0", + "enum-iterator", + "getset", + "git2", + "rustversion", + "thiserror", + "time", +] + [[package]] name = "version_check" version = "0.9.4" diff --git a/cli/Cargo.toml b/cli/Cargo.toml index 6ffa21de..4af5029a 100644 --- a/cli/Cargo.toml +++ b/cli/Cargo.toml @@ -5,6 +5,7 @@ version = "0.6.2" authors = ["The Radicle Team "] edition = "2018" rust-version = "1.63" +build = "build.rs" [package.metadata.deb] assets = [ @@ -30,6 +31,10 @@ link-identities = { version = "0" } librad = { version = "0" } url = { version = "*" } +[build-dependencies] +anyhow = "1.0" +vergen = { version = "7", default-features = false, features = ["build", "git"] } + # Ethereum functionality ethers = { version = "0.6.2", optional = true } diff --git a/cli/build.rs b/cli/build.rs new file mode 100644 index 00000000..c2347511 --- /dev/null +++ b/cli/build.rs @@ -0,0 +1,8 @@ +use anyhow::Result; +use vergen::{vergen, Config, ShaKind}; + +fn main() -> Result<()> { + let mut config = Config::default(); + *config.git_mut().sha_kind_mut() = ShaKind::Short; + vergen(config) +} diff --git a/cli/src/rad.rs b/cli/src/rad.rs index 705a7994..362440fd 100644 --- a/cli/src/rad.rs +++ b/cli/src/rad.rs @@ -9,6 +9,8 @@ use radicle_terminal as term; pub const NAME: &str = "rad"; pub const VERSION: &str = env!("CARGO_PKG_VERSION"); pub const DESCRIPTION: &str = env!("CARGO_PKG_DESCRIPTION"); +pub const GIT_BRANCH: &str = env!("VERGEN_GIT_BRANCH"); +pub const GIT_COMMIT: &str = env!("VERGEN_GIT_SHA_SHORT"); #[derive(Debug)] enum Command { @@ -62,7 +64,7 @@ fn parse_args() -> anyhow::Result { } fn print_version() { - println!("{} {}", NAME, VERSION); + println!("{} {}-{}+sha.{}", NAME, VERSION, GIT_BRANCH, GIT_COMMIT); } fn print_help() -> anyhow::Result<()> {