cosmos-sdk/x/staking/client/module_client.go
colin axner 6e2f5f3102 R4R: Support "unknown commands" for subcommands (#4465)
Fixes #4284
Now prints:

gaiacli query distr comission --trust-node cosmos1234
ERROR: unknown command "comission" for "distr"

Did you mean this?
	commission

Adds custom argument validation for subcommands with subcommands. Doesn't affect "query" or "tx" subcommands since they reside in gaia repo. All flags except help are disabled for these commands.
2019-06-04 18:07:12 +01:00

71 lines
2.3 KiB
Go

package client
import (
"github.com/spf13/cobra"
amino "github.com/tendermint/go-amino"
"github.com/cosmos/cosmos-sdk/client"
"github.com/cosmos/cosmos-sdk/client/utils"
"github.com/cosmos/cosmos-sdk/x/staking/client/cli"
"github.com/cosmos/cosmos-sdk/x/staking/types"
)
// ModuleClient exports all client functionality from this module
type ModuleClient struct {
storeKey string
cdc *amino.Codec
}
func NewModuleClient(storeKey string, cdc *amino.Codec) ModuleClient {
return ModuleClient{storeKey, cdc}
}
// GetQueryCmd returns the cli query commands for this module
func (mc ModuleClient) GetQueryCmd() *cobra.Command {
stakingQueryCmd := &cobra.Command{
Use: types.ModuleName,
Short: "Querying commands for the staking module",
DisableFlagParsing: true,
SuggestionsMinimumDistance: 2,
RunE: utils.ValidateCmd,
}
stakingQueryCmd.AddCommand(client.GetCommands(
cli.GetCmdQueryDelegation(mc.storeKey, mc.cdc),
cli.GetCmdQueryDelegations(mc.storeKey, mc.cdc),
cli.GetCmdQueryUnbondingDelegation(mc.storeKey, mc.cdc),
cli.GetCmdQueryUnbondingDelegations(mc.storeKey, mc.cdc),
cli.GetCmdQueryRedelegation(mc.storeKey, mc.cdc),
cli.GetCmdQueryRedelegations(mc.storeKey, mc.cdc),
cli.GetCmdQueryValidator(mc.storeKey, mc.cdc),
cli.GetCmdQueryValidators(mc.storeKey, mc.cdc),
cli.GetCmdQueryValidatorDelegations(mc.storeKey, mc.cdc),
cli.GetCmdQueryValidatorUnbondingDelegations(mc.storeKey, mc.cdc),
cli.GetCmdQueryValidatorRedelegations(mc.storeKey, mc.cdc),
cli.GetCmdQueryParams(mc.storeKey, mc.cdc),
cli.GetCmdQueryPool(mc.storeKey, mc.cdc))...)
return stakingQueryCmd
}
// GetTxCmd returns the transaction commands for this module
func (mc ModuleClient) GetTxCmd() *cobra.Command {
stakingTxCmd := &cobra.Command{
Use: types.ModuleName,
Short: "Staking transaction subcommands",
DisableFlagParsing: true,
SuggestionsMinimumDistance: 2,
RunE: utils.ValidateCmd,
}
stakingTxCmd.AddCommand(client.PostCommands(
cli.GetCmdCreateValidator(mc.cdc),
cli.GetCmdEditValidator(mc.cdc),
cli.GetCmdDelegate(mc.cdc),
cli.GetCmdRedelegate(mc.storeKey, mc.cdc),
cli.GetCmdUnbond(mc.storeKey, mc.cdc),
)...)
return stakingTxCmd
}