From 800e1068b78a01110d3e700ee45c9d818b1e88bc Mon Sep 17 00:00:00 2001 From: klykov Date: Mon, 7 Mar 2022 17:43:54 +0100 Subject: [PATCH] update clap to v3: clap-utils (error) --- clap-utils/Cargo.toml | 2 +- clap-utils/src/fee_payer.rs | 6 +++--- clap-utils/src/input_parsers.rs | 30 ++++++++++++++-------------- clap-utils/src/keypair.rs | 2 +- clap-utils/src/memo.rs | 4 ++-- clap-utils/src/nonce.rs | 16 +++++++-------- clap-utils/src/offline.rs | 35 +++++++++++++++++---------------- 7 files changed, 48 insertions(+), 47 deletions(-) diff --git a/clap-utils/Cargo.toml b/clap-utils/Cargo.toml index fd50963a83..30ebde1bd5 100644 --- a/clap-utils/Cargo.toml +++ b/clap-utils/Cargo.toml @@ -10,7 +10,7 @@ documentation = "https://docs.rs/solana-clap-utils" edition = "2021" [dependencies] -clap = "3.1.5" +clap = { version = "3.1.5", features = ["cargo"] } rpassword = "5.0" solana-perf = { path = "../perf", version = "=1.10.1" } solana-remote-wallet = { path = "../remote-wallet", version = "=1.10.1", default-features = false} diff --git a/clap-utils/src/fee_payer.rs b/clap-utils/src/fee_payer.rs index ef21c31def..c87b3dcd7d 100644 --- a/clap-utils/src/fee_payer.rs +++ b/clap-utils/src/fee_payer.rs @@ -11,11 +11,11 @@ pub const FEE_PAYER_ARG: ArgConstant<'static> = ArgConstant { is also passed. Defaults to the client keypair.", }; -pub fn fee_payer_arg<'a, 'b>() -> Arg<'a, 'b> { - Arg::with_name(FEE_PAYER_ARG.name) +pub fn fee_payer_arg<'a>() -> Arg<'a> { + Arg::new(FEE_PAYER_ARG.name) .long(FEE_PAYER_ARG.long) .takes_value(true) .value_name("KEYPAIR") - .validator(input_validators::is_valid_signer) + .validator(|s| input_validators::is_valid_signer(s)) .help(FEE_PAYER_ARG.help) } diff --git a/clap-utils/src/input_parsers.rs b/clap-utils/src/input_parsers.rs index 1965d6f7bc..f9c840d57c 100644 --- a/clap-utils/src/input_parsers.rs +++ b/clap-utils/src/input_parsers.rs @@ -21,7 +21,7 @@ use { pub const STDOUT_OUTFILE_TOKEN: &str = "-"; // Return parsed values from matches at `name` -pub fn values_of(matches: &ArgMatches<'_>, name: &str) -> Option> +pub fn values_of(matches: &ArgMatches, name: &str) -> Option> where T: std::str::FromStr, ::Err: std::fmt::Debug, @@ -32,7 +32,7 @@ where } // Return a parsed value from matches at `name` -pub fn value_of(matches: &ArgMatches<'_>, name: &str) -> Option +pub fn value_of(matches: &ArgMatches, name: &str) -> Option where T: std::str::FromStr, ::Err: std::fmt::Debug, @@ -45,7 +45,7 @@ where } pub fn unix_timestamp_from_rfc3339_datetime( - matches: &ArgMatches<'_>, + matches: &ArgMatches, name: &str, ) -> Option { matches.value_of(name).and_then(|value| { @@ -56,7 +56,7 @@ pub fn unix_timestamp_from_rfc3339_datetime( } // Return the keypair for an argument with filename `name` or None if not present. -pub fn keypair_of(matches: &ArgMatches<'_>, name: &str) -> Option { +pub fn keypair_of(matches: &ArgMatches, name: &str) -> Option { if let Some(value) = matches.value_of(name) { if value == ASK_KEYWORD { let skip_validation = matches.is_present(SKIP_SEED_PHRASE_VALIDATION_ARG.name); @@ -69,7 +69,7 @@ pub fn keypair_of(matches: &ArgMatches<'_>, name: &str) -> Option { } } -pub fn keypairs_of(matches: &ArgMatches<'_>, name: &str) -> Option> { +pub fn keypairs_of(matches: &ArgMatches, name: &str) -> Option> { matches.values_of(name).map(|values| { values .filter_map(|value| { @@ -86,11 +86,11 @@ pub fn keypairs_of(matches: &ArgMatches<'_>, name: &str) -> Option> // Return a pubkey for an argument that can itself be parsed into a pubkey, // or is a filename that can be read as a keypair -pub fn pubkey_of(matches: &ArgMatches<'_>, name: &str) -> Option { +pub fn pubkey_of(matches: &ArgMatches, name: &str) -> Option { value_of(matches, name).or_else(|| keypair_of(matches, name).map(|keypair| keypair.pubkey())) } -pub fn pubkeys_of(matches: &ArgMatches<'_>, name: &str) -> Option> { +pub fn pubkeys_of(matches: &ArgMatches, name: &str) -> Option> { matches.values_of(name).map(|values| { values .map(|value| { @@ -105,7 +105,7 @@ pub fn pubkeys_of(matches: &ArgMatches<'_>, name: &str) -> Option> { } // Return pubkey/signature pairs for a string of the form pubkey=signature -pub fn pubkeys_sigs_of(matches: &ArgMatches<'_>, name: &str) -> Option> { +pub fn pubkeys_sigs_of(matches: &ArgMatches, name: &str) -> Option> { matches.values_of(name).map(|values| { values .map(|pubkey_signer_string| { @@ -121,7 +121,7 @@ pub fn pubkeys_sigs_of(matches: &ArgMatches<'_>, name: &str) -> Option, + matches: &ArgMatches, name: &str, wallet_manager: &mut Option>, ) -> Result<(Option>, Option), Box> { @@ -135,7 +135,7 @@ pub fn signer_of( } pub fn pubkey_of_signer( - matches: &ArgMatches<'_>, + matches: &ArgMatches, name: &str, wallet_manager: &mut Option>, ) -> Result, Box> { @@ -152,7 +152,7 @@ pub fn pubkey_of_signer( } pub fn pubkeys_of_multiple_signers( - matches: &ArgMatches<'_>, + matches: &ArgMatches, name: &str, wallet_manager: &mut Option>, ) -> Result>, Box> { @@ -168,7 +168,7 @@ pub fn pubkeys_of_multiple_signers( } pub fn resolve_signer( - matches: &ArgMatches<'_>, + matches: &ArgMatches, name: &str, wallet_manager: &mut Option>, ) -> Result, Box> { @@ -180,15 +180,15 @@ pub fn resolve_signer( ) } -pub fn lamports_of_sol(matches: &ArgMatches<'_>, name: &str) -> Option { +pub fn lamports_of_sol(matches: &ArgMatches, name: &str) -> Option { value_of(matches, name).map(sol_to_lamports) } -pub fn cluster_type_of(matches: &ArgMatches<'_>, name: &str) -> Option { +pub fn cluster_type_of(matches: &ArgMatches, name: &str) -> Option { value_of(matches, name) } -pub fn commitment_of(matches: &ArgMatches<'_>, name: &str) -> Option { +pub fn commitment_of(matches: &ArgMatches, name: &str) -> Option { matches .value_of(name) .map(|value| CommitmentConfig::from_str(value).unwrap_or_default()) diff --git a/clap-utils/src/keypair.rs b/clap-utils/src/keypair.rs index 927e455a83..ec83911e6e 100644 --- a/clap-utils/src/keypair.rs +++ b/clap-utils/src/keypair.rs @@ -241,7 +241,7 @@ impl DefaultSigner { pub fn generate_unique_signers( &self, bulk_signers: Vec>>, - matches: &ArgMatches<'_>, + matches: &ArgMatches, wallet_manager: &mut Option>, ) -> Result> { let mut unique_signers = vec![]; diff --git a/clap-utils/src/memo.rs b/clap-utils/src/memo.rs index 4414e1ea9f..8e29bac338 100644 --- a/clap-utils/src/memo.rs +++ b/clap-utils/src/memo.rs @@ -6,8 +6,8 @@ pub const MEMO_ARG: ArgConstant<'static> = ArgConstant { help: "Specify a memo string to include in the transaction.", }; -pub fn memo_arg<'a, 'b>() -> Arg<'a, 'b> { - Arg::with_name(MEMO_ARG.name) +pub fn memo_arg<'a>() -> Arg<'a> { + Arg::new(MEMO_ARG.name) .long(MEMO_ARG.long) .takes_value(true) .value_name("MEMO") diff --git a/clap-utils/src/nonce.rs b/clap-utils/src/nonce.rs index 34c7011075..8088edf10e 100644 --- a/clap-utils/src/nonce.rs +++ b/clap-utils/src/nonce.rs @@ -1,6 +1,6 @@ use { crate::{input_validators::*, offline::BLOCKHASH_ARG, ArgConstant}, - clap::{App, Arg}, + clap::{Arg, Command}, }; pub const NONCE_ARG: ArgConstant<'static> = ArgConstant { @@ -18,22 +18,22 @@ pub const NONCE_AUTHORITY_ARG: ArgConstant<'static> = ArgConstant { help: "Provide the nonce authority keypair to use when signing a nonced transaction", }; -fn nonce_arg<'a, 'b>() -> Arg<'a, 'b> { - Arg::with_name(NONCE_ARG.name) +fn nonce_arg<'a>() -> Arg<'a> { + Arg::new(NONCE_ARG.name) .long(NONCE_ARG.long) .takes_value(true) .value_name("PUBKEY") .requires(BLOCKHASH_ARG.name) - .validator(is_valid_pubkey) + .validator(|s| is_valid_pubkey(s)) .help(NONCE_ARG.help) } -pub fn nonce_authority_arg<'a, 'b>() -> Arg<'a, 'b> { - Arg::with_name(NONCE_AUTHORITY_ARG.name) +pub fn nonce_authority_arg<'a>() -> Arg<'a> { + Arg::new(NONCE_AUTHORITY_ARG.name) .long(NONCE_AUTHORITY_ARG.long) .takes_value(true) .value_name("KEYPAIR") - .validator(is_valid_signer) + .validator(|s| is_valid_signer(s)) .help(NONCE_AUTHORITY_ARG.help) } @@ -41,7 +41,7 @@ pub trait NonceArgs { fn nonce_args(self, global: bool) -> Self; } -impl NonceArgs for App<'_, '_> { +impl NonceArgs for Command<'_> { fn nonce_args(self, global: bool) -> Self { self.arg(nonce_arg().global(global)).arg( nonce_authority_arg() diff --git a/clap-utils/src/offline.rs b/clap-utils/src/offline.rs index 08f2364dfe..83c951dffc 100644 --- a/clap-utils/src/offline.rs +++ b/clap-utils/src/offline.rs @@ -1,6 +1,6 @@ use { crate::{input_validators::*, ArgConstant}, - clap::{App, Arg}, + clap::{Arg, Command}, }; pub const BLOCKHASH_ARG: ArgConstant<'static> = ArgConstant { @@ -27,36 +27,37 @@ pub const DUMP_TRANSACTION_MESSAGE: ArgConstant<'static> = ArgConstant { help: "Display the base64 encoded binary transaction message in sign-only mode", }; -pub fn blockhash_arg<'a, 'b>() -> Arg<'a, 'b> { - Arg::with_name(BLOCKHASH_ARG.name) +pub fn blockhash_arg<'a>() -> Arg<'a> { + Arg::new(BLOCKHASH_ARG.name) .long(BLOCKHASH_ARG.long) .takes_value(true) .value_name("BLOCKHASH") - .validator(is_hash) + .validator(|s| is_hash(s)) .help(BLOCKHASH_ARG.help) } -pub fn sign_only_arg<'a, 'b>() -> Arg<'a, 'b> { - Arg::with_name(SIGN_ONLY_ARG.name) +pub fn sign_only_arg<'a>() -> Arg<'a> { + Arg::new(SIGN_ONLY_ARG.name) .long(SIGN_ONLY_ARG.long) .takes_value(false) .requires(BLOCKHASH_ARG.name) .help(SIGN_ONLY_ARG.help) } -fn signer_arg<'a, 'b>() -> Arg<'a, 'b> { - Arg::with_name(SIGNER_ARG.name) +fn signer_arg<'a>() -> Arg<'a> { + Arg::new(SIGNER_ARG.name) .long(SIGNER_ARG.long) .takes_value(true) .value_name("PUBKEY=SIGNATURE") - .validator(is_pubkey_sig) + .validator(|s| is_pubkey_sig(s)) .requires(BLOCKHASH_ARG.name) - .multiple(true) + .multiple_occurrences(true) + .multiple_values(true) .help(SIGNER_ARG.help) } -pub fn dump_transaction_message<'a, 'b>() -> Arg<'a, 'b> { - Arg::with_name(DUMP_TRANSACTION_MESSAGE.name) +pub fn dump_transaction_message<'a>() -> Arg<'a> { + Arg::new(DUMP_TRANSACTION_MESSAGE.name) .long(DUMP_TRANSACTION_MESSAGE.long) .takes_value(false) .requires(SIGN_ONLY_ARG.name) @@ -64,16 +65,16 @@ pub fn dump_transaction_message<'a, 'b>() -> Arg<'a, 'b> { } pub trait ArgsConfig { - fn blockhash_arg<'a, 'b>(&self, arg: Arg<'a, 'b>) -> Arg<'a, 'b> { + fn blockhash_arg<'a>(&self, arg: Arg<'a>) -> Arg<'a> { arg } - fn sign_only_arg<'a, 'b>(&self, arg: Arg<'a, 'b>) -> Arg<'a, 'b> { + fn sign_only_arg<'a>(&self, arg: Arg<'a>) -> Arg<'a> { arg } - fn signer_arg<'a, 'b>(&self, arg: Arg<'a, 'b>) -> Arg<'a, 'b> { + fn signer_arg<'a>(&self, arg: Arg<'a>) -> Arg<'a> { arg } - fn dump_transaction_message_arg<'a, 'b>(&self, arg: Arg<'a, 'b>) -> Arg<'a, 'b> { + fn dump_transaction_message_arg<'a>(&self, arg: Arg<'a>) -> Arg<'a> { arg } } @@ -83,7 +84,7 @@ pub trait OfflineArgs { fn offline_args_config(self, config: &dyn ArgsConfig) -> Self; } -impl OfflineArgs for App<'_, '_> { +impl OfflineArgs for Command<'_> { fn offline_args_config(self, config: &dyn ArgsConfig) -> Self { self.arg(config.blockhash_arg(blockhash_arg())) .arg(config.sign_only_arg(sign_only_arg()))