From 84da7668810f0259f8193be419a16d75e10c58b7 Mon Sep 17 00:00:00 2001 From: halfpint104 <86686693+halfpint104@users.noreply.github.com> Date: Wed, 30 Jun 2021 17:58:21 +0100 Subject: [PATCH] Use kebab-case for bridge arguments (#1036) * Updates bridge CLI arguments to be kebab case * Updates scripts to use kebab case for bridge initialisation and relaying of headers/messages * Updates message sending subcommand to be kebab case * Updates documentation for message sending subcommand --- bridges/README.md | 4 +-- bridges/relays/bin-substrate/Cargo.toml | 1 + .../relays/bin-substrate/src/cli/bridge.rs | 19 +++++++------- .../bin-substrate/src/cli/derive_account.rs | 9 ++++--- .../bin-substrate/src/cli/encode_call.rs | 13 +++++----- .../bin-substrate/src/cli/encode_message.rs | 7 +++--- .../bin-substrate/src/cli/estimate_fee.rs | 5 ++-- .../bin-substrate/src/cli/init_bridge.rs | 25 +++++++++---------- .../bin-substrate/src/cli/relay_headers.rs | 25 +++++++++---------- .../bin-substrate/src/cli/relay_messages.rs | 4 +-- .../bin-substrate/src/cli/send_message.rs | 9 ++++--- 11 files changed, 62 insertions(+), 59 deletions(-) diff --git a/bridges/README.md b/bridges/README.md index b407f203b7..40aa85973f 100644 --- a/bridges/README.md +++ b/bridges/README.md @@ -159,7 +159,7 @@ Then we need to initialize and run the relayer: ```bash docker run --network=host -it \ - paritytech/substrate-relay init-bridge RialtoToMillau \ + paritytech/substrate-relay init-bridge rialto-to-millau \ --target-host localhost \ --target-port 9945 \ --source-host localhost \ @@ -167,7 +167,7 @@ docker run --network=host -it \ --target-signer //Alice docker run --network=host -it \ - paritytech/substrate-relay relay-headers RialtoToMillau \ + paritytech/substrate-relay relay-headers rialto-to-millau \ --target-host localhost \ --target-port 9945 \ --source-host localhost \ diff --git a/bridges/relays/bin-substrate/Cargo.toml b/bridges/relays/bin-substrate/Cargo.toml index 3bbf05f3b1..1e38a33e9d 100644 --- a/bridges/relays/bin-substrate/Cargo.toml +++ b/bridges/relays/bin-substrate/Cargo.toml @@ -17,6 +17,7 @@ num-format = "0.4" num-traits = "0.2" paste = "1.0" structopt = "0.3" +strum = { version = "0.21.0", features = ["derive"] } # Bridge dependencies diff --git a/bridges/relays/bin-substrate/src/cli/bridge.rs b/bridges/relays/bin-substrate/src/cli/bridge.rs index 1feb3dcb1a..30950b289f 100644 --- a/bridges/relays/bin-substrate/src/cli/bridge.rs +++ b/bridges/relays/bin-substrate/src/cli/bridge.rs @@ -14,17 +14,16 @@ // You should have received a copy of the GNU General Public License // along with Parity Bridges Common. If not, see . -use structopt::clap::arg_enum; +use strum::{EnumString, EnumVariantNames}; -arg_enum! { - #[derive(Debug, PartialEq, Eq)] - /// Supported full bridges (headers + messages). - pub enum FullBridge { - MillauToRialto, - RialtoToMillau, - RococoToWococo, - WococoToRococo, - } +#[derive(Debug, PartialEq, Eq, EnumString, EnumVariantNames)] +#[strum(serialize_all = "kebab_case")] +/// Supported full bridges (headers + messages). +pub enum FullBridge { + MillauToRialto, + RialtoToMillau, + RococoToWococo, + WococoToRococo, } impl FullBridge { diff --git a/bridges/relays/bin-substrate/src/cli/derive_account.rs b/bridges/relays/bin-substrate/src/cli/derive_account.rs index dff62c21f6..f1967df8c7 100644 --- a/bridges/relays/bin-substrate/src/cli/derive_account.rs +++ b/bridges/relays/bin-substrate/src/cli/derive_account.rs @@ -18,6 +18,7 @@ use crate::cli::{bridge::FullBridge, AccountId}; use crate::select_full_bridge; use relay_substrate_client::Chain; use structopt::StructOpt; +use strum::VariantNames; /// Given a source chain `AccountId`, derive the corresponding `AccountId` for the target chain. /// @@ -28,7 +29,7 @@ use structopt::StructOpt; #[derive(StructOpt)] pub struct DeriveAccount { /// A bridge instance to initalize. - #[structopt(possible_values = &FullBridge::variants(), case_insensitive = true)] + #[structopt(possible_values = FullBridge::VARIANTS, case_insensitive = true)] bridge: FullBridge, /// Source-chain address to derive Target-chain address from. account: AccountId, @@ -80,9 +81,9 @@ mod tests { let millau = "752paRyW1EGfq9YLTSSqcSJ5hqnBDidBmaftGhBo8fy6ypW9"; // when - let (rialto_parsed, rialto_derived) = derive_account_cli("RialtoToMillau", rialto); - let (millau_parsed, millau_derived) = derive_account_cli("MillauToRialto", millau); - let (millau2_parsed, millau2_derived) = derive_account_cli("MillauToRialto", rialto); + let (rialto_parsed, rialto_derived) = derive_account_cli("rialto-to-millau", rialto); + let (millau_parsed, millau_derived) = derive_account_cli("millau-to-rialto", millau); + let (millau2_parsed, millau2_derived) = derive_account_cli("millau-to-rialto", rialto); // then assert_eq!(format!("{}", rialto_parsed), rialto); diff --git a/bridges/relays/bin-substrate/src/cli/encode_call.rs b/bridges/relays/bin-substrate/src/cli/encode_call.rs index cfe6d99a4e..1ae636623b 100644 --- a/bridges/relays/bin-substrate/src/cli/encode_call.rs +++ b/bridges/relays/bin-substrate/src/cli/encode_call.rs @@ -20,12 +20,13 @@ use crate::select_full_bridge; use frame_support::weights::DispatchInfo; use relay_substrate_client::Chain; use structopt::StructOpt; +use strum::VariantNames; /// Encode source chain runtime call. #[derive(StructOpt, Debug)] pub struct EncodeCall { /// A bridge instance to encode call for. - #[structopt(possible_values = &FullBridge::variants(), case_insensitive = true)] + #[structopt(possible_values = FullBridge::VARIANTS, case_insensitive = true)] bridge: FullBridge, #[structopt(flatten)] call: Call, @@ -194,7 +195,7 @@ mod tests { // given let mut encode_call = EncodeCall::from_iter(vec![ "encode-call", - "RialtoToMillau", + "rialto-to-millau", "transfer", "--amount", "12345", @@ -215,7 +216,7 @@ mod tests { #[test] fn should_encode_remark_with_default_payload() { // given - let mut encode_call = EncodeCall::from_iter(vec!["encode-call", "RialtoToMillau", "remark"]); + let mut encode_call = EncodeCall::from_iter(vec!["encode-call", "rialto-to-millau", "remark"]); // when let hex = encode_call.encode().unwrap(); @@ -229,7 +230,7 @@ mod tests { // given let mut encode_call = EncodeCall::from_iter(vec![ "encode-call", - "RialtoToMillau", + "rialto-to-millau", "remark", "--remark-payload", "1234", @@ -246,7 +247,7 @@ mod tests { fn should_encode_remark_with_size() { // given let mut encode_call = - EncodeCall::from_iter(vec!["encode-call", "RialtoToMillau", "remark", "--remark-size", "12"]); + EncodeCall::from_iter(vec!["encode-call", "rialto-to-millau", "remark", "--remark-size", "12"]); // when let hex = encode_call.encode().unwrap(); @@ -260,7 +261,7 @@ mod tests { // when let err = EncodeCall::from_iter_safe(vec![ "encode-call", - "RialtoToMillau", + "rialto-to-millau", "remark", "--remark-payload", "1234", diff --git a/bridges/relays/bin-substrate/src/cli/encode_message.rs b/bridges/relays/bin-substrate/src/cli/encode_message.rs index 213c837767..a2d8a422b5 100644 --- a/bridges/relays/bin-substrate/src/cli/encode_message.rs +++ b/bridges/relays/bin-substrate/src/cli/encode_message.rs @@ -17,6 +17,7 @@ use crate::cli::{bridge::FullBridge, AccountId, CliChain, HexBytes}; use crate::select_full_bridge; use structopt::StructOpt; +use strum::VariantNames; /// Generic message payload. #[derive(StructOpt, Debug, PartialEq, Eq)] @@ -41,7 +42,7 @@ pub enum MessagePayload { #[derive(StructOpt)] pub struct EncodeMessage { /// A bridge instance to initalize. - #[structopt(possible_values = &FullBridge::variants(), case_insensitive = true)] + #[structopt(possible_values = FullBridge::VARIANTS, case_insensitive = true)] bridge: FullBridge, #[structopt(flatten)] payload: MessagePayload, @@ -73,7 +74,7 @@ mod tests { fn should_encode_raw_message() { // given let msg = "01000000e88514000000000002d43593c715fdd31c61141abd04a99fd6822c8558854ccde39a5684e7a56da27d003c040130000000000000000000000000"; - let encode_message = EncodeMessage::from_iter(vec!["encode-message", "MillauToRialto", "raw", msg]); + let encode_message = EncodeMessage::from_iter(vec!["encode-message", "rialto-to-millau", "raw", msg]); // when let hex = encode_message.encode().unwrap(); @@ -88,7 +89,7 @@ mod tests { let sender = sp_keyring::AccountKeyring::Alice.to_account_id().to_ss58check(); let encode_message = EncodeMessage::from_iter(vec![ "encode-message", - "RialtoToMillau", + "rialto-to-millau", "call", "--sender", &sender, diff --git a/bridges/relays/bin-substrate/src/cli/estimate_fee.rs b/bridges/relays/bin-substrate/src/cli/estimate_fee.rs index 129699c269..2fa7918faf 100644 --- a/bridges/relays/bin-substrate/src/cli/estimate_fee.rs +++ b/bridges/relays/bin-substrate/src/cli/estimate_fee.rs @@ -20,12 +20,13 @@ use crate::select_full_bridge; use codec::{Decode, Encode}; use relay_substrate_client::Chain; use structopt::StructOpt; +use strum::VariantNames; /// Estimate Delivery & Dispatch Fee command. #[derive(StructOpt, Debug, PartialEq, Eq)] pub struct EstimateFee { /// A bridge instance to encode call for. - #[structopt(possible_values = &FullBridge::variants(), case_insensitive = true)] + #[structopt(possible_values = FullBridge::VARIANTS, case_insensitive = true)] bridge: FullBridge, #[structopt(flatten)] source: SourceConnectionParams, @@ -93,7 +94,7 @@ mod tests { // when let res = EstimateFee::from_iter(vec![ "estimate_fee", - "RialtoToMillau", + "rialto-to-millau", "--source-port", "1234", "call", diff --git a/bridges/relays/bin-substrate/src/cli/init_bridge.rs b/bridges/relays/bin-substrate/src/cli/init_bridge.rs index 20e6daa500..1ff39ede5c 100644 --- a/bridges/relays/bin-substrate/src/cli/init_bridge.rs +++ b/bridges/relays/bin-substrate/src/cli/init_bridge.rs @@ -20,13 +20,14 @@ use bp_runtime::Chain as ChainBase; use codec::Encode; use relay_substrate_client::{Chain, TransactionSignScheme}; use sp_core::{Bytes, Pair}; -use structopt::{clap::arg_enum, StructOpt}; +use structopt::StructOpt; +use strum::{EnumString, EnumVariantNames, VariantNames}; /// Initialize bridge pallet. #[derive(StructOpt)] pub struct InitBridge { /// A bridge instance to initalize. - #[structopt(possible_values = &InitBridgeName::variants(), case_insensitive = true)] + #[structopt(possible_values = InitBridgeName::VARIANTS, case_insensitive = true)] bridge: InitBridgeName, #[structopt(flatten)] source: SourceConnectionParams, @@ -36,17 +37,15 @@ pub struct InitBridge { target_sign: TargetSigningParams, } -// TODO [#851] Use kebab-case. -arg_enum! { - #[derive(Debug)] - /// Bridge to initialize. - pub enum InitBridgeName { - MillauToRialto, - RialtoToMillau, - WestendToMillau, - RococoToWococo, - WococoToRococo, - } +#[derive(Debug, EnumString, EnumVariantNames)] +#[strum(serialize_all = "kebab_case")] +/// Bridge to initialize. +pub enum InitBridgeName { + MillauToRialto, + RialtoToMillau, + WestendToMillau, + RococoToWococo, + WococoToRococo, } macro_rules! select_bridge { diff --git a/bridges/relays/bin-substrate/src/cli/relay_headers.rs b/bridges/relays/bin-substrate/src/cli/relay_headers.rs index ec521c2918..0f699ff978 100644 --- a/bridges/relays/bin-substrate/src/cli/relay_headers.rs +++ b/bridges/relays/bin-substrate/src/cli/relay_headers.rs @@ -16,13 +16,14 @@ use crate::cli::{PrometheusParams, SourceConnectionParams, TargetConnectionParams, TargetSigningParams}; use crate::finality_pipeline::SubstrateFinalitySyncPipeline; -use structopt::{clap::arg_enum, StructOpt}; +use structopt::StructOpt; +use strum::{EnumString, EnumVariantNames, VariantNames}; /// Start headers relayer process. #[derive(StructOpt)] pub struct RelayHeaders { /// A bridge instance to relay headers for. - #[structopt(possible_values = &RelayHeadersBridge::variants(), case_insensitive = true)] + #[structopt(possible_values = RelayHeadersBridge::VARIANTS, case_insensitive = true)] bridge: RelayHeadersBridge, /// If passed, only mandatory headers (headers that are changing the GRANDPA authorities set) are relayed. #[structopt(long)] @@ -37,17 +38,15 @@ pub struct RelayHeaders { prometheus_params: PrometheusParams, } -// TODO [#851] Use kebab-case. -arg_enum! { - #[derive(Debug)] - /// Headers relay bridge. - pub enum RelayHeadersBridge { - MillauToRialto, - RialtoToMillau, - WestendToMillau, - RococoToWococo, - WococoToRococo, - } +#[derive(Debug, EnumString, EnumVariantNames)] +#[strum(serialize_all = "kebab_case")] +/// Headers relay bridge. +pub enum RelayHeadersBridge { + MillauToRialto, + RialtoToMillau, + WestendToMillau, + RococoToWococo, + WococoToRococo, } macro_rules! select_bridge { diff --git a/bridges/relays/bin-substrate/src/cli/relay_messages.rs b/bridges/relays/bin-substrate/src/cli/relay_messages.rs index 94630886ca..e798888f4c 100644 --- a/bridges/relays/bin-substrate/src/cli/relay_messages.rs +++ b/bridges/relays/bin-substrate/src/cli/relay_messages.rs @@ -21,14 +21,14 @@ use crate::cli::{ }; use crate::messages_lane::MessagesRelayParams; use crate::select_full_bridge; - use structopt::StructOpt; +use strum::VariantNames; /// Start messages relayer process. #[derive(StructOpt)] pub struct RelayMessages { /// A bridge instance to relay messages for. - #[structopt(possible_values = &FullBridge::variants(), case_insensitive = true)] + #[structopt(possible_values = FullBridge::VARIANTS, case_insensitive = true)] bridge: FullBridge, /// Hex-encoded lane id that should be served by the relay. Defaults to `00000000`. #[structopt(long, default_value = "00000000")] diff --git a/bridges/relays/bin-substrate/src/cli/send_message.rs b/bridges/relays/bin-substrate/src/cli/send_message.rs index f710f814e4..ab80254644 100644 --- a/bridges/relays/bin-substrate/src/cli/send_message.rs +++ b/bridges/relays/bin-substrate/src/cli/send_message.rs @@ -30,12 +30,13 @@ use sp_core::{Bytes, Pair}; use sp_runtime::{traits::IdentifyAccount, AccountId32, MultiSignature, MultiSigner}; use std::fmt::Debug; use structopt::StructOpt; +use strum::VariantNames; /// Send bridge message. #[derive(StructOpt)] pub struct SendMessage { /// A bridge instance to encode call for. - #[structopt(possible_values = &FullBridge::variants(), case_insensitive = true)] + #[structopt(possible_values = FullBridge::VARIANTS, case_insensitive = true)] bridge: FullBridge, #[structopt(flatten)] source: SourceConnectionParams, @@ -260,7 +261,7 @@ mod tests { // given let mut send_message = SendMessage::from_iter(vec![ "send-message", - "RialtoToMillau", + "rialto-to-millau", "--source-port", "1234", "--source-signer", @@ -291,7 +292,7 @@ mod tests { // given let mut send_message = SendMessage::from_iter(vec![ "send-message", - "MillauToRialto", + "millau-to-rialto", "--source-port", "1234", "--source-signer", @@ -335,7 +336,7 @@ mod tests { // given let send_message = SendMessage::from_iter_safe(vec![ "send-message", - "MillauToRialto", + "rialto-to-millau", "--source-port", "1234", "--source-signer",