diff --git a/src/mem-agent/example/Cargo.lock b/src/mem-agent/example/Cargo.lock index ef89ef23ef..fa583472bb 100644 --- a/src/mem-agent/example/Cargo.lock +++ b/src/mem-agent/example/Cargo.lock @@ -42,12 +42,52 @@ dependencies = [ ] [[package]] -name = "ansi_term" -version = "0.12.1" +name = "anstream" +version = "0.6.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d52a9bb7ec0cf484c551830a7ce27bd20d67eac647e1befb56b0be4ee39a55d2" +checksum = "64e15c1ab1f89faffbf04a634d5e1962e9074f2741eef6d97f3c4e322426d526" dependencies = [ - "winapi", + "anstyle", + "anstyle-parse", + "anstyle-query", + "anstyle-wincon", + "colorchoice", + "is_terminal_polyfill", + "utf8parse", +] + +[[package]] +name = "anstyle" +version = "1.0.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "862ed96ca487e809f1c8e5a8447f6ee2cf102f846893800b20cebdf541fc6bbd" + +[[package]] +name = "anstyle-parse" +version = "0.2.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4e7644824f0aa2c7b9384579234ef10eb7efb6a0deb83f9630a49594dd9c15c2" +dependencies = [ + "utf8parse", +] + +[[package]] +name = "anstyle-query" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d36fc52c7f6c869915e99412912f22093507da8d9e942ceaf66fe4b7c14422a" +dependencies = [ + "windows-sys 0.52.0", +] + +[[package]] +name = "anstyle-wincon" +version = "3.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5bf74e1b6e971609db8ca7a9ce79fd5768ab6ae46441c572e46cf596f59e57f8" +dependencies = [ + "anstyle", + "windows-sys 0.52.0", ] [[package]] @@ -73,17 +113,6 @@ dependencies = [ "syn 2.0.52", ] -[[package]] -name = "atty" -version = "0.2.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8" -dependencies = [ - "hermit-abi 0.1.19", - "libc", - "winapi", -] - [[package]] name = "autocfg" version = "1.1.0" @@ -163,19 +192,50 @@ dependencies = [ [[package]] name = "clap" -version = "2.34.0" +version = "4.5.40" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a0610544180c38b88101fecf2dd634b174a62eef6946f84dfc6a7127512b381c" +checksum = "40b6887a1d8685cebccf115538db5c0efe625ccac9696ad45c409d96566e910f" dependencies = [ - "ansi_term", - "atty", - "bitflags 1.3.2", - "strsim", - "textwrap", - "unicode-width", - "vec_map", + "clap_builder", + "clap_derive", ] +[[package]] +name = "clap_builder" +version = "4.5.40" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e0c66c08ce9f0c698cbce5c0279d0bb6ac936d8674174fe48f736533b964f59e" +dependencies = [ + "anstream", + "anstyle", + "clap_lex", + "strsim", +] + +[[package]] +name = "clap_derive" +version = "4.5.40" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d2c7947ae4cc3d851207c1adb5b5e260ff0cca11446b1d6d1423788e442257ce" +dependencies = [ + "heck 0.5.0", + "proc-macro2", + "quote", + "syn 2.0.52", +] + +[[package]] +name = "clap_lex" +version = "0.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b94f61472cee1439c0b966b47e3aca9ae07e45d070759512cd390ea2bebc6675" + +[[package]] +name = "colorchoice" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b05b61dc5112cbb17e4b6cd61790d9845d13888356391624cbe7e41efeac1e75" + [[package]] name = "core-foundation-sys" version = "0.8.6" @@ -441,13 +501,10 @@ dependencies = [ ] [[package]] -name = "hermit-abi" -version = "0.1.19" +name = "heck" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33" -dependencies = [ - "libc", -] +checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" [[package]] name = "hermit-abi" @@ -513,11 +570,17 @@ version = "0.4.13" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "261f68e344040fbd0edea105bef17c66edf46f984ddb1115b775ce31be948f4b" dependencies = [ - "hermit-abi 0.4.0", + "hermit-abi", "libc", "windows-sys 0.52.0", ] +[[package]] +name = "is_terminal_polyfill" +version = "1.70.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7943c866cc5cd64cbc25b2e01621d07fa8eb2a1a23160ee81ce38704e97b8ecf" + [[package]] name = "itertools" version = "0.10.5" @@ -615,6 +678,7 @@ dependencies = [ "async-trait", "byteorder", "chrono", + "clap", "home", "lazy_static", "libc", @@ -626,7 +690,6 @@ dependencies = [ "slog-async", "slog-scope", "slog-term", - "structopt", "tokio", "ttrpc", "ttrpc-codegen", @@ -811,30 +874,6 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" -[[package]] -name = "proc-macro-error" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c" -dependencies = [ - "proc-macro-error-attr", - "proc-macro2", - "quote", - "syn 1.0.109", - "version_check", -] - -[[package]] -name = "proc-macro-error-attr" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869" -dependencies = [ - "proc-macro2", - "quote", - "version_check", -] - [[package]] name = "proc-macro2" version = "1.0.79" @@ -861,7 +900,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "355f634b43cdd80724ee7848f95770e7e70eefa6dcf14fea676216573b8fd603" dependencies = [ "bytes", - "heck", + "heck 0.3.3", "itertools", "log", "multimap", @@ -1148,33 +1187,9 @@ dependencies = [ [[package]] name = "strsim" -version = "0.8.0" +version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ea5119cdb4c55b55d432abb513a0429384878c15dde60cc77b1c99de1a95a6a" - -[[package]] -name = "structopt" -version = "0.3.26" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c6b5c64445ba8094a6ab0c3cd2ad323e07171012d9c98b0b15651daf1787a10" -dependencies = [ - "clap", - "lazy_static", - "structopt-derive", -] - -[[package]] -name = "structopt-derive" -version = "0.4.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dcb5ae327f9cc13b68763b5749770cb9e048a99bd9dfdfa58d0cf05d5f64afe0" -dependencies = [ - "heck", - "proc-macro-error", - "proc-macro2", - "quote", - "syn 1.0.109", -] +checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" [[package]] name = "syn" @@ -1227,15 +1242,6 @@ dependencies = [ "winapi", ] -[[package]] -name = "textwrap" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d326610f408c7a4eb6f51c37c330e496b08506c9457c9d34287ecc38809fb060" -dependencies = [ - "unicode-width", -] - [[package]] name = "thiserror" version = "1.0.58" @@ -1400,22 +1406,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d4c87d22b6e3f4a18d4d40ef354e97c90fcb14dd91d7dc0aa9d8a1172ebf7202" [[package]] -name = "unicode-width" -version = "0.1.11" +name = "utf8parse" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e51733f11c9c4f72aa0c160008246859e340b00807569a0da0e7a1079b27ba85" - -[[package]] -name = "vec_map" -version = "0.8.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1bddf1187be692e79c5ffeab891132dfb0f236ed36a43c7ed39f1165ee20191" - -[[package]] -name = "version_check" -version = "0.9.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" +checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" [[package]] name = "vsock" diff --git a/src/mem-agent/example/Cargo.toml b/src/mem-agent/example/Cargo.toml index e20a5a3ee8..5e03ae78e0 100644 --- a/src/mem-agent/example/Cargo.toml +++ b/src/mem-agent/example/Cargo.toml @@ -8,7 +8,7 @@ slog = "2.5.2" slog-scope = "4.1.2" slog-term = "2.9.0" slog-async = "2.7" -structopt = "0.3" +clap = { version = "4.5.40", features = ["derive", "cargo"] } anyhow = "1.0" libc = "0.2" page_size = "0.6" diff --git a/src/mem-agent/example/ctl.rs b/src/mem-agent/example/ctl.rs index 45d11d4216..b6fb281ebd 100644 --- a/src/mem-agent/example/ctl.rs +++ b/src/mem-agent/example/ctl.rs @@ -9,34 +9,34 @@ use anyhow::{anyhow, Result}; use protocols::empty; use protocols::mem_agent_ttrpc; use share::option::{CompactSetOption, MemcgSetOption}; -use structopt::StructOpt; +use clap::Parser; use ttrpc::r#async::Client; -#[derive(Debug, StructOpt)] +#[derive(Debug, Parser)] enum Command { - #[structopt(name = "memcgstatus", about = "get memory cgroup status")] + #[clap(name = "memcgstatus", about = "get memory cgroup status")] MemcgStatus, - #[structopt(name = "memcgset", about = "set memory cgroup")] + #[clap(name = "memcgset", about = "set memory cgroup")] MemcgSet(MemcgSetOption), - #[structopt(name = "compactset", about = "set compact")] + #[clap(name = "compactset", about = "set compact")] CompactSet(CompactSetOption), } -#[derive(StructOpt, Debug)] -#[structopt(name = "mem-agent-ctl", about = "Memory agent controler")] +#[derive(Parser, Debug)] +#[clap(name = "mem-agent-ctl", about = "Memory agent controler")] struct Opt { - #[structopt(long, default_value = "unix:///var/run/mem-agent.sock")] + #[clap(long, default_value = "unix:///var/run/mem-agent.sock")] addr: String, - #[structopt(subcommand)] + #[clap(subcommand)] command: Command, } #[tokio::main] async fn main() -> Result<()> { - let opt = Opt::from_args(); + let opt = Opt::parse(); // setup client let c = Client::connect(&opt.addr).unwrap(); diff --git a/src/mem-agent/example/share/option.rs b/src/mem-agent/example/share/option.rs index 1a9e178b11..cfc944ac1c 100644 --- a/src/mem-agent/example/share/option.rs +++ b/src/mem-agent/example/share/option.rs @@ -3,23 +3,23 @@ // SPDX-License-Identifier: Apache-2.0 use crate::protocols::mem_agent as rpc; -use structopt::StructOpt; +use clap::Parser; -#[derive(Debug, StructOpt)] +#[derive(Debug, Parser)] pub struct MemcgSetOption { - #[structopt(long)] + #[clap(long)] memcg_disabled: Option, - #[structopt(long)] + #[clap(long)] memcg_swap: Option, - #[structopt(long)] + #[clap(long)] memcg_swappiness_max: Option, - #[structopt(long)] + #[clap(long)] memcg_period_secs: Option, - #[structopt(long)] + #[clap(long)] memcg_period_psi_percent_limit: Option, - #[structopt(long)] + #[clap(long)] memcg_eviction_psi_percent_limit: Option, - #[structopt(long)] + #[clap(long)] memcg_eviction_run_aging_count_min: Option, } @@ -72,23 +72,23 @@ impl MemcgSetOption { } } -#[derive(Debug, StructOpt)] +#[derive(Debug, Parser)] pub struct CompactSetOption { - #[structopt(long)] + #[clap(long)] compact_disabled: Option, - #[structopt(long)] + #[clap(long)] compact_period_secs: Option, - #[structopt(long)] + #[clap(long)] compact_period_psi_percent_limit: Option, - #[structopt(long)] + #[clap(long)] compact_psi_percent_limit: Option, - #[structopt(long)] + #[clap(long)] compact_sec_max: Option, - #[structopt(long)] + #[clap(long)] compact_order: Option, - #[structopt(long)] + #[clap(long)] compact_threshold: Option, - #[structopt(long)] + #[clap(long)] compact_force_times: Option, } diff --git a/src/mem-agent/example/srv.rs b/src/mem-agent/example/srv.rs index 4a08e94789..d46ec6d838 100644 --- a/src/mem-agent/example/srv.rs +++ b/src/mem-agent/example/srv.rs @@ -3,6 +3,7 @@ // SPDX-License-Identifier: Apache-2.0 use anyhow::{anyhow, Result}; +use clap::Parser; use share::option::{CompactSetOption, MemcgSetOption}; use slog::{Drain, Level, Logger}; use slog_async; @@ -11,23 +12,22 @@ use slog_scope::{error, info}; use slog_term; use std::fs::OpenOptions; use std::io::BufWriter; -use structopt::StructOpt; mod protocols; mod share; -#[derive(StructOpt, Debug)] -#[structopt(name = "mem-agent", about = "Memory agent")] +#[derive(Parser, Debug)] +#[clap(name = "mem-agent", about = "Memory agent")] struct Opt { - #[structopt(long, default_value = "unix:///var/run/mem-agent.sock")] + #[clap(long, default_value = "unix:///var/run/mem-agent.sock")] addr: String, - #[structopt(long)] + #[clap(long)] log_file: Option, - #[structopt(long, default_value = "trace", parse(try_from_str = parse_slog_level))] + #[arg(long, default_value = "trace", value_parser = parse_slog_level)] log_level: Level, - #[structopt(flatten)] + #[clap(flatten)] memcg: MemcgSetOption, - #[structopt(flatten)] + #[clap(flatten)] compact: CompactSetOption, } @@ -73,7 +73,7 @@ fn setup_logging(opt: &Opt) -> Result { fn main() -> Result<()> { // Check opt - let opt = Opt::from_args(); + let opt = Opt::parse(); let _ = setup_logging(&opt).map_err(|e| anyhow!("setup_logging fail: {}", e))?;