diff --git a/src/rust/Cargo.lock b/src/rust/Cargo.lock index 79624569c87ab6a1231400e6ae134b88e2a1ba09..742eb3574fb2a774a689193b3487843ead2501eb 100644 --- a/src/rust/Cargo.lock +++ b/src/rust/Cargo.lock @@ -228,9 +228,9 @@ checksum = "0d261e256854913907f67ed06efbc3338dfe6179796deefc1ff763fc1aee5535" [[package]] name = "bytemuck" -version = "1.13.0" +version = "1.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c041d3eab048880cb0b86b256447da3f18859a163c3b8d8893f4e6368abe6393" +checksum = "17febce684fd15d89027105661fec94afb475cb995fbc59d2865198446ba2eea" dependencies = [ "bytemuck_derive", ] @@ -291,9 +291,9 @@ checksum = "fd16c4719339c4530435d38e511904438d07cce7950afa3718a84ac36c10e89e" [[package]] name = "clap" -version = "4.1.6" +version = "4.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec0b0588d44d4d63a87dbd75c136c166bbfd9a86a31cb89e09906521c7d3f5e3" +checksum = "c3d7ae14b20b94cb02149ed21a86c423859cbe18dc7ed69845cace50e52b40a5" dependencies = [ "bitflags", "clap_derive", @@ -304,9 +304,9 @@ dependencies = [ [[package]] name = "clap_derive" -version = "4.1.0" +version = "4.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "684a277d672e91966334af371f1a7b5833f9aa00b07c84e92fbce95e00208ce8" +checksum = "44bec8e5c9d09e439c4335b1af0abaab56dcf3b94999a936e1bb47b9134288f0" dependencies = [ "heck", "proc-macro-error", @@ -512,9 +512,9 @@ dependencies = [ [[package]] name = "crossbeam-channel" -version = "0.5.6" +version = "0.5.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c2dd04ddaf88237dc3b8d8f9a3c1004b506b54b3313403944054d23c0870c521" +checksum = "cf2b3e8478797446514c91ef04bafcb59faba183e621ad488df88983cc14128c" dependencies = [ "cfg-if", "crossbeam-utils", @@ -522,9 +522,9 @@ dependencies = [ [[package]] name = "crossbeam-deque" -version = "0.8.2" +version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "715e8152b692bba2d374b53d4875445368fdf21a94751410af607a5ac677d1fc" +checksum = "ce6fd6f855243022dcecf8702fef0c297d4338e226845fe067f6341ad9fa0cef" dependencies = [ "cfg-if", "crossbeam-epoch", @@ -533,22 +533,22 @@ dependencies = [ [[package]] name = "crossbeam-epoch" -version = "0.9.13" +version = "0.9.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "01a9af1f4c2ef74bb8aa1f7e19706bc72d03598c8a570bb5de72243c7a9d9d5a" +checksum = "46bd5f3f85273295a9d14aedfb86f6aadbff6d8f5295c4a9edb08e819dcf5695" dependencies = [ "autocfg", "cfg-if", "crossbeam-utils", - "memoffset 0.7.1", + "memoffset 0.8.0", "scopeguard", ] [[package]] name = "crossbeam-utils" -version = "0.8.14" +version = "0.8.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4fb766fa798726286dbbb842f174001dab8abc7b627a1dd86e0b7222a95d929f" +checksum = "3c063cd8cc95f5c377ed0d4b49a4b21f632396ff690e8470c29b3359b346984b" dependencies = [ "cfg-if", ] @@ -1294,9 +1294,9 @@ dependencies = [ [[package]] name = "h2" -version = "0.3.15" +version = "0.3.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f9f29bc9dda355256b2916cf526ab02ce0aeaaaf2bad60d65ef3f12f11dd0f4" +checksum = "5be7b54589b581f624f566bf5d8eb2bab1db736c51528720b6bd36b96b55924d" dependencies = [ "bytes", "fnv", @@ -1896,9 +1896,9 @@ dependencies = [ [[package]] name = "memoffset" -version = "0.7.1" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5de893c32cde5f383baa4c04c5d6dbdd735cfd4a794b0debdb2bb1b421da5ff4" +checksum = "d61c719bcfbcf5d62b3a09efa6088de8c54bc0bfcd3ea7ae39fcc186108b8de1" dependencies = [ "autocfg", ] @@ -3201,9 +3201,9 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.25.0" +version = "1.26.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8e00990ebabbe4c14c08aca901caed183ecd5c09562a12c824bb53d3c3fd3af" +checksum = "03201d01c3c27a29c8a5cee5b55a93ddae1ccf6f08f65365c2c918f8c1b76f64" dependencies = [ "autocfg", "bytes", @@ -3215,7 +3215,7 @@ dependencies = [ "socket2", "tokio-macros", "tracing", - "windows-sys 0.42.0", + "windows-sys 0.45.0", ] [[package]] diff --git a/src/rust/Cargo.toml b/src/rust/Cargo.toml index a2765b896091871a57d7ff67ecc2c3a55cad7187..18899aa31d686faa654dd20098bbeb21fab20541 100644 --- a/src/rust/Cargo.toml +++ b/src/rust/Cargo.toml @@ -24,7 +24,7 @@ members = [ [workspace.package] edition = "2021" authors = ["Maël MARTIN <mael.martin@protonmail.com>"] -version = "0.1.0" +version = "0.0.0-git" license = "MIT" [workspace.dependencies] diff --git a/src/rust/commons/build.rs b/src/rust/commons/build.rs new file mode 100644 index 0000000000000000000000000000000000000000..61dc1b1a9351a6d640fa0f303925fea4c76ace98 --- /dev/null +++ b/src/rust/commons/build.rs @@ -0,0 +1,40 @@ +use std::{ + env::var_os, + fs, + path::Path, + process::{Command, Stdio}, +}; + +fn main() { + let out_dir = var_os("OUT_DIR").expect("failed to get OUT_DIR"); + let src_file = Path::new(&out_dir).join("commons_build_infos.rs"); + + let output = Command::new("git") + .args(["describe", "--abbrev=1", "--tags", "--dirty=-dirty"]) + .stdout(Stdio::piped()) + .spawn() + .expect("failed to run git to describe the git repo") + .wait_with_output() + .expect("failed to wait for git describe command..."); + let version = match String::from_utf8(output.stdout) + .expect("git didn't return a correct UTF8 string") + .trim() + .split("-") + .collect::<Vec<_>>()[..] + { + [tag] => tag.to_string(), + [tag, hash] => format!("{tag}+{hash}"), + [tag, post, hash] => format!("{tag}.post{post}+{hash}"), + [tag, post, hash, dirty] => format!("{tag}.post{post}+{hash}-{dirty}"), + _ => panic!(), + }; + + let build_infos = format!( + r#" +pub const fn version() -> &'static str {{ "{version}" }} + "# + ); + + fs::write(src_file, build_infos).expect("failed to write the build info file"); + println!("cargo:rerun-if-changed=build.rs"); +} diff --git a/src/rust/commons/src/lib.rs b/src/rust/commons/src/lib.rs index a0f0d33f8941e82d72595c3ca3ae555726aa950f..67949b19aa618180a3d5865bd6aeff8bdd08de5b 100644 --- a/src/rust/commons/src/lib.rs +++ b/src/rust/commons/src/lib.rs @@ -10,6 +10,8 @@ pub mod logger; pub use error::*; +include!(concat!(env!("OUT_DIR"), "/commons_build_infos.rs")); + /// Returns the home folder of the user. If no home folder is found log the /// error and panic. This function check in order the following env variables to /// determine the home folder: diff --git a/src/rust/lkt/src/args.rs b/src/rust/lkt/src/args.rs index 512abd963d09d5255eb216c3281e35b278d12e8f..9460bde4e13d09348926de01b13cc3d83a09e79a 100644 --- a/src/rust/lkt/src/args.rs +++ b/src/rust/lkt/src/args.rs @@ -4,7 +4,13 @@ use clap::{Parser, Subcommand}; use std::ops::Range; #[derive(Parser, Debug)] -#[command(author, version, about, long_about = None, disable_help_subcommand = true, args_conflicts_with_subcommands = true)] +#[command( author + , version = commons::version() + , about + , long_about = None + , disable_help_subcommand = true + , args_conflicts_with_subcommands = true +)] struct Args { #[command(subcommand)] action: SubCommand,