diff --git a/substrate/client/cli/src/commands/build_spec_cmd.rs b/substrate/client/cli/src/commands/build_spec_cmd.rs index 3d66e752b8..78ad3b6472 100644 --- a/substrate/client/cli/src/commands/build_spec_cmd.rs +++ b/substrate/client/cli/src/commands/build_spec_cmd.rs @@ -27,7 +27,7 @@ use structopt::StructOpt; use std::io::Write; /// The `build-spec` command used to build a specification. -#[derive(Debug, StructOpt)] +#[derive(Debug, StructOpt, Clone)] pub struct BuildSpecCmd { /// Force raw genesis storage output. #[structopt(long = "raw")] diff --git a/substrate/client/cli/src/commands/check_block_cmd.rs b/substrate/client/cli/src/commands/check_block_cmd.rs index 74e2d34f97..a47245de0f 100644 --- a/substrate/client/cli/src/commands/check_block_cmd.rs +++ b/substrate/client/cli/src/commands/check_block_cmd.rs @@ -25,7 +25,7 @@ use std::{fmt::Debug, str::FromStr, sync::Arc}; use structopt::StructOpt; /// The `check-block` command used to validate blocks. -#[derive(Debug, StructOpt)] +#[derive(Debug, StructOpt, Clone)] pub struct CheckBlockCmd { /// Block hash or number #[structopt(value_name = "HASH or NUMBER")] diff --git a/substrate/client/cli/src/commands/export_blocks_cmd.rs b/substrate/client/cli/src/commands/export_blocks_cmd.rs index 55f05d9d7f..4153c80a05 100644 --- a/substrate/client/cli/src/commands/export_blocks_cmd.rs +++ b/substrate/client/cli/src/commands/export_blocks_cmd.rs @@ -34,7 +34,7 @@ use std::sync::Arc; use structopt::StructOpt; /// The `export-blocks` command used to export blocks. -#[derive(Debug, StructOpt)] +#[derive(Debug, StructOpt, Clone)] pub struct ExportBlocksCmd { /// Output file name or stdout if unspecified. #[structopt(parse(from_os_str))] diff --git a/substrate/client/cli/src/commands/export_state_cmd.rs b/substrate/client/cli/src/commands/export_state_cmd.rs index 2211b3131a..e154c3a502 100644 --- a/substrate/client/cli/src/commands/export_state_cmd.rs +++ b/substrate/client/cli/src/commands/export_state_cmd.rs @@ -27,7 +27,7 @@ use sc_client_api::{StorageProvider, UsageProvider}; /// The `export-state` command used to export the state of a given block into /// a chain spec. -#[derive(Debug, StructOpt)] +#[derive(Debug, StructOpt, Clone)] pub struct ExportStateCmd { /// Block hash or number. #[structopt(value_name = "HASH or NUMBER")] diff --git a/substrate/client/cli/src/commands/generate.rs b/substrate/client/cli/src/commands/generate.rs index 08b5f20772..42214d2f5e 100644 --- a/substrate/client/cli/src/commands/generate.rs +++ b/substrate/client/cli/src/commands/generate.rs @@ -24,7 +24,7 @@ use crate::{ }; /// The `generate` command -#[derive(Debug, StructOpt)] +#[derive(Debug, StructOpt, Clone)] #[structopt(name = "generate", about = "Generate a random account")] pub struct GenerateCmd { /// The number of words in the phrase to generate. One of 12 (default), 15, 18, 21 and 24. diff --git a/substrate/client/cli/src/commands/insert_key.rs b/substrate/client/cli/src/commands/insert_key.rs index 6e4324deed..f166db85c1 100644 --- a/substrate/client/cli/src/commands/insert_key.rs +++ b/substrate/client/cli/src/commands/insert_key.rs @@ -29,7 +29,7 @@ use sc_keystore::LocalKeystore; use sc_service::config::{KeystoreConfig, BasePath}; /// The `insert` command -#[derive(Debug, StructOpt)] +#[derive(Debug, StructOpt, Clone)] #[structopt( name = "insert", about = "Insert a key to the keystore of a node." diff --git a/substrate/client/cli/src/commands/purge_chain_cmd.rs b/substrate/client/cli/src/commands/purge_chain_cmd.rs index 1902d92e63..c61e21a6a5 100644 --- a/substrate/client/cli/src/commands/purge_chain_cmd.rs +++ b/substrate/client/cli/src/commands/purge_chain_cmd.rs @@ -26,7 +26,7 @@ use std::io::{self, Write}; use structopt::StructOpt; /// The `purge-chain` command used to remove the whole chain. -#[derive(Debug, StructOpt)] +#[derive(Debug, StructOpt, Clone)] pub struct PurgeChainCmd { /// Skip interactive prompt by answering yes automatically. #[structopt(short = "y")] diff --git a/substrate/client/cli/src/commands/run_cmd.rs b/substrate/client/cli/src/commands/run_cmd.rs index bb6f77819d..9ef14cfa02 100644 --- a/substrate/client/cli/src/commands/run_cmd.rs +++ b/substrate/client/cli/src/commands/run_cmd.rs @@ -35,7 +35,7 @@ use std::net::{IpAddr, Ipv4Addr, SocketAddr}; use structopt::StructOpt; /// The `run` command used to run a node. -#[derive(Debug, StructOpt)] +#[derive(Debug, StructOpt, Clone)] pub struct RunCmd { /// Enable validator mode. /// diff --git a/substrate/client/cli/src/commands/sign.rs b/substrate/client/cli/src/commands/sign.rs index a39e14697b..5d48786142 100644 --- a/substrate/client/cli/src/commands/sign.rs +++ b/substrate/client/cli/src/commands/sign.rs @@ -22,7 +22,7 @@ use structopt::StructOpt; use sp_core::crypto::SecretString; /// The `sign` command -#[derive(Debug, StructOpt)] +#[derive(Debug, StructOpt, Clone)] #[structopt( name = "sign", about = "Sign a message, with a given (secret) key" diff --git a/substrate/client/cli/src/commands/vanity.rs b/substrate/client/cli/src/commands/vanity.rs index da47e8bb26..ce1f079db8 100644 --- a/substrate/client/cli/src/commands/vanity.rs +++ b/substrate/client/cli/src/commands/vanity.rs @@ -29,7 +29,7 @@ use sp_runtime::traits::IdentifyAccount; use utils::print_from_uri; /// The `vanity` command -#[derive(Debug, StructOpt)] +#[derive(Debug, StructOpt, Clone)] #[structopt( name = "vanity", about = "Generate a seed that provides a vanity address" diff --git a/substrate/client/cli/src/commands/verify.rs b/substrate/client/cli/src/commands/verify.rs index f5bd5a0606..c6ce3ef9d6 100644 --- a/substrate/client/cli/src/commands/verify.rs +++ b/substrate/client/cli/src/commands/verify.rs @@ -23,7 +23,7 @@ use sp_core::{Public, crypto::Ss58Codec}; use structopt::StructOpt; /// The `verify` command -#[derive(Debug, StructOpt)] +#[derive(Debug, StructOpt, Clone)] #[structopt( name = "verify", about = "Verify a signature for a message, provided on STDIN, with a given (public or secret) key" diff --git a/substrate/client/cli/src/params/database_params.rs b/substrate/client/cli/src/params/database_params.rs index 3d5aca10d5..d468f15555 100644 --- a/substrate/client/cli/src/params/database_params.rs +++ b/substrate/client/cli/src/params/database_params.rs @@ -21,7 +21,7 @@ use structopt::StructOpt; use sc_service::TransactionStorageMode; /// Parameters for block import. -#[derive(Debug, StructOpt)] +#[derive(Debug, StructOpt, Clone)] pub struct DatabaseParams { /// Select database backend to use. #[structopt( diff --git a/substrate/client/cli/src/params/import_params.rs b/substrate/client/cli/src/params/import_params.rs index 7409dbf79d..a1d8c1f883 100644 --- a/substrate/client/cli/src/params/import_params.rs +++ b/substrate/client/cli/src/params/import_params.rs @@ -28,7 +28,7 @@ use structopt::StructOpt; use std::path::PathBuf; /// Parameters for block import. -#[derive(Debug, StructOpt)] +#[derive(Debug, StructOpt, Clone)] pub struct ImportParams { #[allow(missing_docs)] #[structopt(flatten)] @@ -125,7 +125,7 @@ impl ImportParams { } /// Execution strategies parameters. -#[derive(Debug, StructOpt)] +#[derive(Debug, StructOpt, Clone)] pub struct ExecutionStrategiesParams { /// The means of execution used when calling into the runtime for importing blocks as /// part of an initial sync. diff --git a/substrate/client/cli/src/params/keystore_params.rs b/substrate/client/cli/src/params/keystore_params.rs index d75cdebc5a..2975c9bf50 100644 --- a/substrate/client/cli/src/params/keystore_params.rs +++ b/substrate/client/cli/src/params/keystore_params.rs @@ -27,7 +27,7 @@ use sp_core::crypto::SecretString; const DEFAULT_KEYSTORE_CONFIG_PATH: &'static str = "keystore"; /// Parameters of the keystore -#[derive(Debug, StructOpt)] +#[derive(Debug, StructOpt, Clone)] pub struct KeystoreParams { /// Specify custom URIs to connect to for keystore-services #[structopt(long = "keystore-uri")] diff --git a/substrate/client/cli/src/params/mod.rs b/substrate/client/cli/src/params/mod.rs index 8308b123f7..0769e5a87a 100644 --- a/substrate/client/cli/src/params/mod.rs +++ b/substrate/client/cli/src/params/mod.rs @@ -75,7 +75,7 @@ impl GenericNumber { } /// Wrapper type that is either a `Hash` or the number of a `Block`. -#[derive(Debug)] +#[derive(Debug, Clone)] pub struct BlockNumberOrHash(String); impl FromStr for BlockNumberOrHash { @@ -119,7 +119,7 @@ impl BlockNumberOrHash { /// Optional flag for specifying crypto algorithm -#[derive(Debug, StructOpt)] +#[derive(Debug, StructOpt, Clone)] pub struct CryptoSchemeFlag { /// cryptography scheme #[structopt( @@ -133,7 +133,7 @@ pub struct CryptoSchemeFlag { } /// Optional flag for specifying output type -#[derive(Debug, StructOpt)] +#[derive(Debug, StructOpt, Clone)] pub struct OutputTypeFlag { /// output format #[structopt( @@ -147,7 +147,7 @@ pub struct OutputTypeFlag { } /// Optional flag for specifying network scheme -#[derive(Debug, StructOpt)] +#[derive(Debug, StructOpt, Clone)] pub struct NetworkSchemeFlag { /// network address format #[structopt( diff --git a/substrate/client/cli/src/params/network_params.rs b/substrate/client/cli/src/params/network_params.rs index d4dcd6ebaa..7549c76378 100644 --- a/substrate/client/cli/src/params/network_params.rs +++ b/substrate/client/cli/src/params/network_params.rs @@ -26,7 +26,7 @@ use std::{borrow::Cow, path::PathBuf}; use structopt::StructOpt; /// Parameters used to create the network configuration. -#[derive(Debug, StructOpt)] +#[derive(Debug, StructOpt, Clone)] pub struct NetworkParams { /// Specify a list of bootnodes. #[structopt(long = "bootnodes", value_name = "ADDR")] diff --git a/substrate/client/cli/src/params/node_key_params.rs b/substrate/client/cli/src/params/node_key_params.rs index d43c87804d..d5823341aa 100644 --- a/substrate/client/cli/src/params/node_key_params.rs +++ b/substrate/client/cli/src/params/node_key_params.rs @@ -31,7 +31,7 @@ const NODE_KEY_ED25519_FILE: &str = "secret_ed25519"; /// Parameters used to create the `NodeKeyConfig`, which determines the keypair /// used for libp2p networking. -#[derive(Debug, StructOpt)] +#[derive(Debug, StructOpt, Clone)] pub struct NodeKeyParams { /// The secret key to use for libp2p networking. /// diff --git a/substrate/client/cli/src/params/offchain_worker_params.rs b/substrate/client/cli/src/params/offchain_worker_params.rs index b41a5d5625..a6d65e4027 100644 --- a/substrate/client/cli/src/params/offchain_worker_params.rs +++ b/substrate/client/cli/src/params/offchain_worker_params.rs @@ -31,7 +31,7 @@ use crate::error; use crate::OffchainWorkerEnabled; /// Offchain worker related parameters. -#[derive(Debug, StructOpt)] +#[derive(Debug, StructOpt, Clone)] pub struct OffchainWorkerParams { /// Should execute offchain workers on every block. /// diff --git a/substrate/client/cli/src/params/pruning_params.rs b/substrate/client/cli/src/params/pruning_params.rs index 987b8527e6..32abaa9a75 100644 --- a/substrate/client/cli/src/params/pruning_params.rs +++ b/substrate/client/cli/src/params/pruning_params.rs @@ -21,7 +21,7 @@ use sc_service::{PruningMode, Role, KeepBlocks}; use structopt::StructOpt; /// Parameters to define the pruning mode -#[derive(Debug, StructOpt)] +#[derive(Debug, StructOpt, Clone)] pub struct PruningParams { /// Specify the state pruning mode, a number of blocks to keep or 'archive'. /// diff --git a/substrate/client/cli/src/params/shared_params.rs b/substrate/client/cli/src/params/shared_params.rs index 45ce41846b..c0317c280a 100644 --- a/substrate/client/cli/src/params/shared_params.rs +++ b/substrate/client/cli/src/params/shared_params.rs @@ -22,7 +22,7 @@ use structopt::StructOpt; use crate::arg_enums::TracingReceiver; /// Shared parameters used by all `CoreParams`. -#[derive(Debug, StructOpt)] +#[derive(Debug, StructOpt, Clone)] pub struct SharedParams { /// Specify the chain specification. /// diff --git a/substrate/client/cli/src/params/transaction_pool_params.rs b/substrate/client/cli/src/params/transaction_pool_params.rs index bf0ed53e53..feea19c97c 100644 --- a/substrate/client/cli/src/params/transaction_pool_params.rs +++ b/substrate/client/cli/src/params/transaction_pool_params.rs @@ -20,7 +20,7 @@ use sc_service::config::TransactionPoolOptions; use structopt::StructOpt; /// Parameters used to create the pool configuration. -#[derive(Debug, StructOpt)] +#[derive(Debug, StructOpt, Clone)] pub struct TransactionPoolParams { /// Maximum number of transactions in the transaction pool. #[structopt(long = "pool-limit", value_name = "COUNT", default_value = "8192")]