From 8f1051289cdb17f3a530982f9decd054961eb502 Mon Sep 17 00:00:00 2001 From: Joshua Ford Date: Thu, 22 Dec 2022 20:44:23 -0600 Subject: [PATCH 1/2] Fix clap deprecation warnings Signed-off-by: Joshua Ford --- crates/liboci-cli/src/checkpoint.rs | 2 +- crates/liboci-cli/src/create.rs | 2 +- crates/liboci-cli/src/delete.rs | 2 +- crates/liboci-cli/src/events.rs | 2 +- crates/liboci-cli/src/exec.rs | 4 ++-- crates/liboci-cli/src/kill.rs | 2 +- crates/liboci-cli/src/pause.rs | 2 +- crates/liboci-cli/src/ps.rs | 2 +- crates/liboci-cli/src/resume.rs | 2 +- crates/liboci-cli/src/run.rs | 2 +- crates/liboci-cli/src/start.rs | 2 +- crates/liboci-cli/src/state.rs | 2 +- crates/liboci-cli/src/update.rs | 2 +- 13 files changed, 14 insertions(+), 14 deletions(-) diff --git a/crates/liboci-cli/src/checkpoint.rs b/crates/liboci-cli/src/checkpoint.rs index e1baf4101..3e8f72309 100644 --- a/crates/liboci-cli/src/checkpoint.rs +++ b/crates/liboci-cli/src/checkpoint.rs @@ -4,7 +4,7 @@ use std::path::PathBuf; /// Checkpoint a running container #[derive(Parser, Debug)] pub struct Checkpoint { - #[clap(forbid_empty_values = true, required = true)] + #[clap(value_parser = clap::builder::NonEmptyStringValueParser::new(), required = true)] pub container_id: String, /// Allow external unix sockets #[clap(long)] diff --git a/crates/liboci-cli/src/create.rs b/crates/liboci-cli/src/create.rs index 88b3af224..c83d56960 100644 --- a/crates/liboci-cli/src/create.rs +++ b/crates/liboci-cli/src/create.rs @@ -19,6 +19,6 @@ pub struct Create { #[clap(long, default_value = "0")] pub preserve_fds: i32, /// name of the container instance to be started - #[clap(forbid_empty_values = true, required = true)] + #[clap(value_parser = clap::builder::NonEmptyStringValueParser::new(), required = true)] pub container_id: String, } diff --git a/crates/liboci-cli/src/delete.rs b/crates/liboci-cli/src/delete.rs index 46db417ee..33ae595df 100644 --- a/crates/liboci-cli/src/delete.rs +++ b/crates/liboci-cli/src/delete.rs @@ -3,7 +3,7 @@ use clap::Parser; /// Release any resources held by the container #[derive(Parser, Debug)] pub struct Delete { - #[clap(forbid_empty_values = true, required = true)] + #[clap(value_parser = clap::builder::NonEmptyStringValueParser::new(), required = true)] pub container_id: String, /// forces deletion of the container if it is still running (using SIGKILL) #[clap(short, long)] diff --git a/crates/liboci-cli/src/events.rs b/crates/liboci-cli/src/events.rs index 9cc259050..6adb57fa9 100644 --- a/crates/liboci-cli/src/events.rs +++ b/crates/liboci-cli/src/events.rs @@ -10,6 +10,6 @@ pub struct Events { #[clap(long)] pub stats: bool, /// Name of the container instance - #[clap(forbid_empty_values = true, required = true)] + #[clap(value_parser = clap::builder::NonEmptyStringValueParser::new(), required = true)] pub container_id: String, } diff --git a/crates/liboci-cli/src/exec.rs b/crates/liboci-cli/src/exec.rs index 61c34f77a..f6b283e60 100644 --- a/crates/liboci-cli/src/exec.rs +++ b/crates/liboci-cli/src/exec.rs @@ -18,7 +18,7 @@ pub struct Exec { /// The file to which the pid of the container process should be written to pub pid_file: Option, /// Environment variables that should be set in the container - #[clap(short, long, parse(try_from_str = parse_key_val), number_of_values = 1)] + #[clap(short, long, value_parser = parse_key_val::, number_of_values = 1)] pub env: Vec<(String, String)>, /// Prevent the process from gaining additional privileges #[clap(long)] @@ -30,7 +30,7 @@ pub struct Exec { #[clap(short, long)] pub detach: bool, /// Identifier of the container - #[clap(forbid_empty_values = true, required = true)] + #[clap(value_parser = clap::builder::NonEmptyStringValueParser::new(), required = true)] pub container_id: String, /// Command that should be executed in the container #[clap(required = false)] diff --git a/crates/liboci-cli/src/kill.rs b/crates/liboci-cli/src/kill.rs index 186360923..366c42f9b 100644 --- a/crates/liboci-cli/src/kill.rs +++ b/crates/liboci-cli/src/kill.rs @@ -3,7 +3,7 @@ use clap::Parser; /// Send the specified signal to the container #[derive(Parser, Debug)] pub struct Kill { - #[clap(forbid_empty_values = true, required = true)] + #[clap(value_parser = clap::builder::NonEmptyStringValueParser::new(), required = true)] pub container_id: String, pub signal: String, #[clap(short, long)] diff --git a/crates/liboci-cli/src/pause.rs b/crates/liboci-cli/src/pause.rs index 8d50a7f9f..0b6dac5c8 100644 --- a/crates/liboci-cli/src/pause.rs +++ b/crates/liboci-cli/src/pause.rs @@ -3,6 +3,6 @@ use clap::Parser; /// Suspend the processes within the container #[derive(Parser, Debug)] pub struct Pause { - #[clap(forbid_empty_values = true, required = true)] + #[clap(value_parser = clap::builder::NonEmptyStringValueParser::new(), required = true)] pub container_id: String, } diff --git a/crates/liboci-cli/src/ps.rs b/crates/liboci-cli/src/ps.rs index 556ffc184..93055e8c3 100644 --- a/crates/liboci-cli/src/ps.rs +++ b/crates/liboci-cli/src/ps.rs @@ -6,7 +6,7 @@ pub struct Ps { /// format to display processes: table or json (default: "table") #[clap(short, long, default_value = "table")] pub format: String, - #[clap(forbid_empty_values = true, required = true)] + #[clap(value_parser = clap::builder::NonEmptyStringValueParser::new(), required = true)] pub container_id: String, /// options will be passed to the ps utility #[clap(last = true)] diff --git a/crates/liboci-cli/src/resume.rs b/crates/liboci-cli/src/resume.rs index 8e9a5bba8..fb158f98a 100644 --- a/crates/liboci-cli/src/resume.rs +++ b/crates/liboci-cli/src/resume.rs @@ -3,6 +3,6 @@ use clap::Parser; /// Resume the processes within the container #[derive(Parser, Debug)] pub struct Resume { - #[clap(forbid_empty_values = true, required = true)] + #[clap(value_parser = clap::builder::NonEmptyStringValueParser::new(), required = true)] pub container_id: String, } diff --git a/crates/liboci-cli/src/run.rs b/crates/liboci-cli/src/run.rs index 21399aa42..b9d9c8de1 100644 --- a/crates/liboci-cli/src/run.rs +++ b/crates/liboci-cli/src/run.rs @@ -18,6 +18,6 @@ pub struct Run { #[clap(long, default_value = "0")] pub preserve_fds: i32, /// name of the container instance to be started - #[clap(forbid_empty_values = true, required = true)] + #[clap(value_parser = clap::builder::NonEmptyStringValueParser::new(), required = true)] pub container_id: String, } diff --git a/crates/liboci-cli/src/start.rs b/crates/liboci-cli/src/start.rs index bb2341e92..fb560b78a 100644 --- a/crates/liboci-cli/src/start.rs +++ b/crates/liboci-cli/src/start.rs @@ -3,6 +3,6 @@ use clap::Parser; /// Start a previously created container #[derive(Parser, Debug)] pub struct Start { - #[clap(forbid_empty_values = true, required = true)] + #[clap(value_parser = clap::builder::NonEmptyStringValueParser::new(), required = true)] pub container_id: String, } diff --git a/crates/liboci-cli/src/state.rs b/crates/liboci-cli/src/state.rs index 1c97d8404..b83e58b09 100644 --- a/crates/liboci-cli/src/state.rs +++ b/crates/liboci-cli/src/state.rs @@ -3,6 +3,6 @@ use clap::Parser; /// Show the container state #[derive(Parser, Debug)] pub struct State { - #[clap(forbid_empty_values = true, required = true)] + #[clap(value_parser = clap::builder::NonEmptyStringValueParser::new(), required = true)] pub container_id: String, } diff --git a/crates/liboci-cli/src/update.rs b/crates/liboci-cli/src/update.rs index 44c4db6a2..b05f7b24a 100644 --- a/crates/liboci-cli/src/update.rs +++ b/crates/liboci-cli/src/update.rs @@ -4,7 +4,7 @@ use std::path::PathBuf; /// Update running container resource constraints #[derive(Parser, Debug)] pub struct Update { - #[clap(forbid_empty_values = true, required = true)] + #[clap(value_parser = clap::builder::NonEmptyStringValueParser::new(), required = true)] pub container_id: String, /// Read the new resource limits from the given json file. Use - to read from stdin. From a3bfc105ee30b106c64dbb6b73e313fd3c00e2d1 Mon Sep 17 00:00:00 2001 From: Joshua Ford Date: Fri, 23 Dec 2022 17:00:11 -0600 Subject: [PATCH 2/2] Upgrade clap to v4.0.32 Signed-off-by: Joshua Ford --- Cargo.lock | 50 ++++--------------- crates/libcgroups/Cargo.toml | 2 +- crates/liboci-cli/Cargo.toml | 4 +- crates/youki/Cargo.toml | 6 +-- crates/youki/src/commands/completion.rs | 2 +- crates/youki/src/main.rs | 2 +- .../integration_test/Cargo.toml | 4 +- .../integration_test/src/main.rs | 2 +- 8 files changed, 21 insertions(+), 51 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index a38fc5b22..e86c0c59b 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -345,43 +345,28 @@ dependencies = [ [[package]] name = "clap" -version = "3.2.23" +version = "4.0.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "71655c45cb9845d3270c9d6df84ebe72b4dad3c2ba3f7023ad47c144e4e473a5" +checksum = "a7db700bc935f9e43e88d00b0850dae18a63773cfbec6d8e070fccf7fef89a39" dependencies = [ - "atty", "bitflags", - "clap_derive 3.2.18", + "clap_derive", "clap_lex", - "indexmap", + "is-terminal", "once_cell", "strsim", "termcolor", - "textwrap", ] [[package]] name = "clap_complete" -version = "3.2.5" +version = "4.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f7a2e0a962c45ce25afce14220bc24f9dade0a1787f185cecf96bfba7847cd8" +checksum = "10861370d2ba66b0f5989f83ebf35db6421713fd92351790e7fdd6c36774c56b" dependencies = [ "clap", ] -[[package]] -name = "clap_derive" -version = "3.2.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ea0c8bce528c4be4da13ea6fead8965e95b6073585a2f05204bd8f4119f82a65" -dependencies = [ - "heck", - "proc-macro-error", - "proc-macro2", - "quote", - "syn", -] - [[package]] name = "clap_derive" version = "4.0.21" @@ -397,9 +382,9 @@ dependencies = [ [[package]] name = "clap_lex" -version = "0.2.4" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2850f2f5a82cbf437dd5af4d49848fbdfc27c157c3d010345776f952765261c5" +checksum = "0d4198f73e42b4936b35b5bb248d81d2b595ecb170da0bac7655c54eedfa8da8" dependencies = [ "os_str_bytes", ] @@ -1356,15 +1341,6 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2540771e65fc8cb83cd6e8a237f70c319bd5c29f78ed1084ba5d50eeac86f7f9" -[[package]] -name = "hermit-abi" -version = "0.1.19" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33" -dependencies = [ - "libc", -] - [[package]] name = "hermit-abi" version = "0.2.6" @@ -1453,7 +1429,7 @@ dependencies = [ "anyhow", "chrono", "clap", - "clap_derive 4.0.21", + "clap_derive", "flate2", "libcgroups", "libcontainer", @@ -2015,7 +1991,7 @@ version = "1.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0fac9e2da13b5eb447a6ce3d392f23a29d8694bff781bf03a16cd9ac8697593b" dependencies = [ - "hermit-abi 0.2.6", + "hermit-abi", "libc", ] @@ -3001,12 +2977,6 @@ dependencies = [ "crossbeam", ] -[[package]] -name = "textwrap" -version = "0.16.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "222a222a5bfe1bba4a77b45ec488a741b3cb8872e5e499451fd7d0129c9c7c3d" - [[package]] name = "thiserror" version = "1.0.38" diff --git a/crates/libcgroups/Cargo.toml b/crates/libcgroups/Cargo.toml index aa920d338..7bb79e29f 100644 --- a/crates/libcgroups/Cargo.toml +++ b/crates/libcgroups/Cargo.toml @@ -37,7 +37,7 @@ libc = { version = "0.2.138", optional = true } oci-spec = { version = "0.5.8", features = ["proptests", "runtime"] } quickcheck = "1" mockall = { version = "0.11.3", features = [] } -clap = "3.2.23" +clap = "4.0.32" serde = { version = "1.0", features = ["derive"] } serde_json = "1.0" env_logger = "0.10" diff --git a/crates/liboci-cli/Cargo.toml b/crates/liboci-cli/Cargo.toml index 1aef2d208..4ae88068b 100644 --- a/crates/liboci-cli/Cargo.toml +++ b/crates/liboci-cli/Cargo.toml @@ -11,6 +11,6 @@ edition = "2021" keywords = ["youki", "container", "oci"] [dependencies.clap] -version = "3.2.23" +version = "4.0.32" default-features = false -features = ["std", "suggestions", "derive", "cargo"] +features = ["std", "suggestions", "derive", "cargo", "help", "usage", "error-context"] diff --git a/crates/youki/Cargo.toml b/crates/youki/Cargo.toml index ad0eb1451..859f80fe4 100644 --- a/crates/youki/Cargo.toml +++ b/crates/youki/Cargo.toml @@ -21,9 +21,9 @@ wasm-wasmedge = ["libcontainer/wasm-wasmedge"] wasm-wasmtime = ["libcontainer/wasm-wasmtime"] [dependencies.clap] -version = "3.2.23" +version = "4.0.32" default-features = false -features = ["std", "suggestions", "derive", "cargo"] +features = ["std", "suggestions", "derive", "cargo", "help", "usage", "error-context"] [dependencies] anyhow = "1.0.65" @@ -40,7 +40,7 @@ procfs = "0.14.2" serde = { version = "1.0", features = ["derive"] } serde_json = "1.0" tabwriter = "1" -clap_complete = "3.2.5" +clap_complete = "4.0.7" caps = "0.5.5" [dev-dependencies] diff --git a/crates/youki/src/commands/completion.rs b/crates/youki/src/commands/completion.rs index 3b43aada0..5e0542a04 100644 --- a/crates/youki/src/commands/completion.rs +++ b/crates/youki/src/commands/completion.rs @@ -7,7 +7,7 @@ use std::io; #[derive(Debug, Parser)] /// Generate scripts for shell completion pub struct Completion { - #[clap(long = "shell", short = 's', arg_enum)] + #[clap(long = "shell", short = 's', value_enum)] pub shell: Shell, } diff --git a/crates/youki/src/main.rs b/crates/youki/src/main.rs index 3533b9a27..8b73404bb 100644 --- a/crates/youki/src/main.rs +++ b/crates/youki/src/main.rs @@ -7,7 +7,7 @@ mod logger; use anyhow::bail; use anyhow::Context; use anyhow::Result; -use clap::IntoApp; +use clap::CommandFactory; use clap::{crate_version, Parser}; use nix::libc; use std::fs; diff --git a/tests/rust-integration-tests/integration_test/Cargo.toml b/tests/rust-integration-tests/integration_test/Cargo.toml index fe7f6a864..8121b687a 100644 --- a/tests/rust-integration-tests/integration_test/Cargo.toml +++ b/tests/rust-integration-tests/integration_test/Cargo.toml @@ -25,9 +25,9 @@ uuid = "1.2" which = "4.3.0" [dependencies.clap] -version = "3.2.23" +version = "4.0.32" default-features = false -features = ["std", "suggestions", "derive", "cargo"] +features = ["std", "suggestions", "derive", "cargo", "help", "usage", "error-context"] [dependencies.clap_derive] version = "4.0.21" diff --git a/tests/rust-integration-tests/integration_test/src/main.rs b/tests/rust-integration-tests/integration_test/src/main.rs index eaeadec8e..aca9c58d3 100644 --- a/tests/rust-integration-tests/integration_test/src/main.rs +++ b/tests/rust-integration-tests/integration_test/src/main.rs @@ -47,7 +47,7 @@ struct Run { /// Selected tests to be run, format should be /// space separated groups, eg /// -t group1::test1,test3 group2 group3::test5 - #[clap(short, long, multiple_values = true, value_delimiter = ' ')] + #[clap(short, long, num_args(1..), value_delimiter = ' ')] tests: Option>, }