github.com/Finschia/finschia-sdk@v0.48.1/x/crisis/client/cli/tx.go (about)

     1  package cli
     2  
     3  import (
     4  	"errors"
     5  
     6  	"github.com/spf13/cobra"
     7  
     8  	"github.com/Finschia/finschia-sdk/client"
     9  	"github.com/Finschia/finschia-sdk/client/flags"
    10  	"github.com/Finschia/finschia-sdk/client/tx"
    11  	"github.com/Finschia/finschia-sdk/x/crisis/types"
    12  )
    13  
    14  // NewTxCmd returns a root CLI command handler for all x/crisis transaction commands.
    15  func NewTxCmd() *cobra.Command {
    16  	txCmd := &cobra.Command{
    17  		Use:                        types.ModuleName,
    18  		Short:                      "Crisis transactions subcommands",
    19  		DisableFlagParsing:         true,
    20  		SuggestionsMinimumDistance: 2,
    21  		RunE:                       client.ValidateCmd,
    22  	}
    23  
    24  	txCmd.AddCommand(NewMsgVerifyInvariantTxCmd())
    25  
    26  	return txCmd
    27  }
    28  
    29  // NewMsgVerifyInvariantTxCmd returns a CLI command handler for creating a
    30  // MsgVerifyInvariant transaction.
    31  func NewMsgVerifyInvariantTxCmd() *cobra.Command {
    32  	cmd := &cobra.Command{
    33  		Use:   "invariant-broken [module-name] [invariant-route]",
    34  		Short: "Submit proof that an invariant broken to halt the chain",
    35  		Args:  cobra.ExactArgs(2),
    36  		RunE: func(cmd *cobra.Command, args []string) error {
    37  			clientCtx, err := client.GetClientTxContext(cmd)
    38  			if err != nil {
    39  				return err
    40  			}
    41  			moduleName, route := args[0], args[1]
    42  			if moduleName == "" {
    43  				return errors.New("invalid module name")
    44  			}
    45  			if route == "" {
    46  				return errors.New("invalid invariant route")
    47  			}
    48  
    49  			senderAddr := clientCtx.GetFromAddress()
    50  
    51  			msg := types.NewMsgVerifyInvariant(senderAddr, moduleName, route)
    52  
    53  			return tx.GenerateOrBroadcastTxCLI(clientCtx, cmd.Flags(), msg)
    54  		},
    55  	}
    56  
    57  	flags.AddTxFlagsToCmd(cmd)
    58  
    59  	return cmd
    60  }