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 }