diff --git a/client/v2/autocli/util.go b/client/v2/autocli/util.go index 984471329494..ca9a1674f853 100644 --- a/client/v2/autocli/util.go +++ b/client/v2/autocli/util.go @@ -11,12 +11,19 @@ import ( // findSubCommand finds a sub-command of the provided command whose Use // string is or begins with the provided subCmdName. +// It verifies the command's aliases as well. func findSubCommand(cmd *cobra.Command, subCmdName string) *cobra.Command { for _, subCmd := range cmd.Commands() { use := subCmd.Use if use == subCmdName || strings.HasPrefix(use, subCmdName+" ") { return subCmd } + + for _, alias := range subCmd.Aliases { + if alias == subCmdName || strings.HasPrefix(alias, subCmdName+" ") { + return subCmd + } + } } return nil } diff --git a/x/feegrant/client/cli/tx.go b/x/feegrant/client/cli/tx.go index 2b4a8ed45bf3..3f6fa4821725 100644 --- a/x/feegrant/client/cli/tx.go +++ b/x/feegrant/client/cli/tx.go @@ -39,17 +39,18 @@ func GetTxCmd(ac address.Codec) *cobra.Command { feegrantTxCmd.AddCommand( NewCmdFeeGrant(ac), - NewCmdRevokeFeegrant(ac), ) return feegrantTxCmd } // NewCmdFeeGrant returns a CLI command handler to create a MsgGrantAllowance transaction. +// This command is more powerful than AutoCLI generated command as it allows a better input validation. func NewCmdFeeGrant(ac address.Codec) *cobra.Command { cmd := &cobra.Command{ - Use: "grant [granter_key_or_address] [grantee]", - Short: "Grant Fee allowance to an address", + Use: "grant [granter_key_or_address] [grantee]", + Aliases: []string{"grant-allowance"}, + Short: "Grant Fee allowance to an address", Long: strings.TrimSpace( fmt.Sprintf( `Grant authorization to pay fees from your address. Note, the '--from' flag is @@ -186,6 +187,7 @@ Examples: return cmd } +<<<<<<< HEAD // NewCmdRevokeFeegrant returns a CLI command handler to create a MsgRevokeAllowance transaction. func NewCmdRevokeFeegrant(ac address.Codec) *cobra.Command { cmd := &cobra.Command{ @@ -222,6 +224,8 @@ Example: return cmd } +======= +>>>>>>> 1d03d890c (feat(x/feegrant): add autocli options for tx (#17959)) func getPeriodReset(duration int64) time.Time { return time.Now().Add(getPeriod(duration)) } diff --git a/x/feegrant/client/cli/tx_test.go b/x/feegrant/client/cli/tx_test.go index 2f5997f7dac0..b7f6c33196ed 100644 --- a/x/feegrant/client/cli/tx_test.go +++ b/x/feegrant/client/cli/tx_test.go @@ -428,6 +428,7 @@ func (s *CLITestSuite) TestNewCmdFeeGrant() { } } +<<<<<<< HEAD func (s *CLITestSuite) TestNewCmdRevokeFeegrant() { granter := s.addedGranter grantee := s.addedGrantee @@ -521,6 +522,8 @@ func (s *CLITestSuite) TestNewCmdRevokeFeegrant() { } } +======= +>>>>>>> 1d03d890c (feat(x/feegrant): add autocli options for tx (#17959)) func (s *CLITestSuite) TestTxWithFeeGrant() { clientCtx := s.clientCtx granter := s.addedGranter diff --git a/x/feegrant/module/autocli.go b/x/feegrant/module/autocli.go index 454ac09b1e69..3ba095376ab1 100644 --- a/x/feegrant/module/autocli.go +++ b/x/feegrant/module/autocli.go @@ -51,6 +51,20 @@ You can find the fee-grant of a granter and grantee.`), }, Tx: &autocliv1.ServiceCommandDescriptor{ Service: feegrantv1beta1.Msg_ServiceDesc.ServiceName, + RpcCommandOptions: []*autocliv1.RpcCommandOptions{ + { + RpcMethod: "RevokeAllowance", + Use: "revoke [granter] [grantee]", + Short: "Revoke a fee grant", + Long: "Revoke fee grant from a granter to a grantee. Note, the '--from' flag is ignored as it is implied from [granter]", + Example: fmt.Sprintf(`$ %s tx feegrant revoke [granter] [grantee]`, version.AppName), + PositionalArgs: []*autocliv1.PositionalArgDescriptor{ + {ProtoField: "granter"}, + {ProtoField: "grantee"}, + }, + }, + }, + EnhanceCustomCommand: true, }, } }