diff --git a/Cargo.lock b/Cargo.lock index 7061ef1..5c74219 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -70,6 +70,16 @@ dependencies = [ "byte-tools", ] +[[package]] +name = "buildinfo" +version = "0.1.0" +source = "git+https://github.com/jjs-dev/commons#f35ff686e10db99ef24d0b8da109a00f0f9dea7a" +dependencies = [ + "clap", + "once_cell", + "serde", +] + [[package]] name = "byte-tools" version = "0.3.1" @@ -456,6 +466,7 @@ name = "pps-cli" version = "0.1.0" dependencies = [ "anyhow", + "buildinfo", "clap", "pps-engine", "serde", @@ -535,9 +546,9 @@ dependencies = [ [[package]] name = "regex" -version = "1.4.6" +version = "1.5.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a26af418b574bd56588335b3a3659a65725d4e636eb1016c2f9e3b38c7cc759" +checksum = "d07a8629359eb56f1e2fb1652bb04212c072a87ba68546a04065d525673ac461" dependencies = [ "regex-syntax", ] @@ -554,9 +565,9 @@ dependencies = [ [[package]] name = "regex-syntax" -version = "0.6.23" +version = "0.6.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "24d5f089152e60f62d28b835fbff2cd2e8dc0baf1ac13343bef92ab7eed84548" +checksum = "f497285884f3fcff424ffc933e56d7cbca511def0c9831a7f9b5f6153e3cc89b" [[package]] name = "roxmltree" @@ -575,18 +586,18 @@ checksum = "71d301d4193d031abdd79ff7e3dd721168a9572ef3fe51a1517aba235bd8f86e" [[package]] name = "serde" -version = "1.0.125" +version = "1.0.126" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "558dc50e1a5a5fa7112ca2ce4effcb321b0300c0d4ccf0776a9f60cd89031171" +checksum = "ec7505abeacaec74ae4778d9d9328fe5a5d04253220a85c4ee022239fc996d03" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.125" +version = "1.0.126" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b093b7a2bb58203b5da3056c05b4ec1fed827dcfdb37347a8841695263b3d06d" +checksum = "963a7dbc9895aeac7ac90e74f34a5d5261828f79df35cbed41e10189d3804d43" dependencies = [ "proc-macro2", "quote", @@ -697,9 +708,9 @@ dependencies = [ [[package]] name = "syn" -version = "1.0.70" +version = "1.0.72" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9505f307c872bab8eb46f77ae357c8eba1fdacead58ee5a850116b1d7f82883" +checksum = "a1e8cdbefb79a9a5a65e0db8b47b723ee907b7c7f8496c76a1770b5c310bab82" dependencies = [ "proc-macro2", "quote", @@ -755,9 +766,9 @@ dependencies = [ [[package]] name = "tokio" -version = "1.5.0" +version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83f0c8e7c0addab50b663055baf787d0af7f413a46e6e7fb9559a4e4db7137a5" +checksum = "bd3076b5c8cc18138b8f8814895c11eb4de37114a5d127bafdc5e55798ceef37" dependencies = [ "autocfg", "bytes", @@ -773,9 +784,9 @@ dependencies = [ [[package]] name = "tokio-macros" -version = "1.1.0" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "caf7b11a536f46a809a8a9f0bb4237020f70ecbf115b842360afb127ea2fda57" +checksum = "c49e3df43841dafb86046472506755d8501c5615673955f6aa17181125d13c37" dependencies = [ "proc-macro2", "quote", @@ -846,9 +857,9 @@ dependencies = [ [[package]] name = "tracing-subscriber" -version = "0.2.17" +version = "0.2.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "705096c6f83bf68ea5d357a6aa01829ddbdac531b357b45abeca842938085baa" +checksum = "aa5553bf0883ba7c9cbe493b085c29926bd41b66afc31ff72cf17ff4fb60dcd5" dependencies = [ "ansi_term", "chrono", @@ -892,9 +903,9 @@ checksum = "9337591893a19b88d8d87f2cec1e73fad5cdfd10e5a6f349f498ad6ea2ffb1e3" [[package]] name = "unicode-xid" -version = "0.2.1" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f7fe0bb3479651439c9112f72b6c505038574c9fbb575ed1bf3b797fa39dd564" +checksum = "8ccb82d61f80a663efe1f787a51b16b5a51e3314d6ac365b08639f52387b33f3" [[package]] name = "uuid" diff --git a/build-env/Dockerfile b/build-env/Dockerfile index 2c44c7e..a9b80ce 100644 --- a/build-env/Dockerfile +++ b/build-env/Dockerfile @@ -8,8 +8,13 @@ ENV PYTHONUNBUFFERED=1 RUN python3 ./build-env/make.py --out /build-env FROM rust:slim as build-pps +ARG BUILD_DATE='' +ARG GIT_HASH='' COPY . /pps WORKDIR /pps +ENV JJS_BUILD_INFO_VERIFY_FULL=1 +ENV JJS_BUILD_INFO_DATE=${BUILD_DATE} +ENV JJS_BUILD_INFO_GIT_COMMIT=${GIT_HASH}} RUN cargo install --path cli FROM ubuntu:focal diff --git a/ci/publish-build.sh b/ci/publish-build.sh index 42c6e39..9d14620 100644 --- a/ci/publish-build.sh +++ b/ci/publish-build.sh @@ -1,3 +1,3 @@ set -euxo pipefail export DOCKER_BUILDKIT=1 -docker build -f build-env/Dockerfile -t pps-cli . \ No newline at end of file +docker build -f build-env/Dockerfile -t pps-cli --build-arg "BUILD_DATE=$(date)" --build-arg "GIT_HASH=$(git rev-parse HEAD)" . \ No newline at end of file diff --git a/cli/Cargo.toml b/cli/Cargo.toml index 82e2e1d..364d179 100644 --- a/cli/Cargo.toml +++ b/cli/Cargo.toml @@ -5,7 +5,7 @@ authors = ["Mikail Bagishov "] edition = "2018" [dependencies] -serde = { version = "1.0.125", features = ["derive"] } +serde = { version = "1.0.126", features = ["derive"] } serde_json = "1.0.64" anyhow = "1.0.40" tokio = { version = "1.5.0", features = ["process", "macros", "rt-multi-thread", "fs"] } @@ -13,3 +13,4 @@ clap = "3.0.0-beta.2" pps-engine = { path = "../engine" } tracing = "0.1.25" tracing-subscriber = "0.2.17" +buildinfo = { git = "https://github.com/jjs-dev/commons" } \ No newline at end of file diff --git a/cli/src/main.rs b/cli/src/main.rs index 5e9183e..2357869 100644 --- a/cli/src/main.rs +++ b/cli/src/main.rs @@ -3,7 +3,7 @@ mod import; mod progress_notifier; use anyhow::Context as _; -use clap::Clap; +use clap::{Clap, FromArgMatches, IntoApp}; use std::path::Path; #[derive(Clap, Debug)] @@ -31,7 +31,10 @@ async fn main() -> anyhow::Result<()> { tracing_subscriber::fmt() .with_env_filter(tracing_subscriber::EnvFilter::from_default_env()) .init(); - let args = Args::parse(); + let args = Args::into_app(); + let args = buildinfo::BuildInfo::wrap_clap(args); + let args = args.get_matches(); + let args = Args::from_arg_matches(&args); process_args(args).await.context("failed to process args")?; Ok(()) }