github.com/fibonacci-chain/fbc@v0.0.0-20231124064014-c7636198c1e9/x/wasm/client/cli/gov_custom.go (about) 1 package cli 2 3 import ( 4 "bufio" 5 "fmt" 6 "sort" 7 "strings" 8 9 "github.com/fibonacci-chain/fbc/libs/cosmos-sdk/client/context" 10 "github.com/fibonacci-chain/fbc/libs/cosmos-sdk/codec" 11 interfacetypes "github.com/fibonacci-chain/fbc/libs/cosmos-sdk/codec/types" 12 sdk "github.com/fibonacci-chain/fbc/libs/cosmos-sdk/types" 13 "github.com/fibonacci-chain/fbc/libs/cosmos-sdk/x/auth" 14 "github.com/fibonacci-chain/fbc/libs/cosmos-sdk/x/auth/client/utils" 15 "github.com/fibonacci-chain/fbc/x/gov" 16 govcli "github.com/fibonacci-chain/fbc/x/gov/client/cli" 17 "github.com/fibonacci-chain/fbc/x/wasm/types" 18 "github.com/spf13/cobra" 19 "github.com/spf13/viper" 20 ) 21 22 func ProposalUpdateDeploymentWhitelistCmd(cdcP *codec.CodecProxy, reg interfacetypes.InterfaceRegistry) *cobra.Command { 23 cmd := &cobra.Command{ 24 Use: "update-wasm-deployment-whitelist [comma-separated addresses]", 25 Short: "Submit an update wasm contract deployment whitelist proposal", 26 Args: cobra.ExactArgs(1), 27 RunE: func(cmd *cobra.Command, args []string) error { 28 cdc := cdcP.GetCdc() 29 inBuf := bufio.NewReader(cmd.InOrStdin()) 30 txBldr := auth.NewTxBuilderFromCLI(inBuf).WithTxEncoder(utils.GetTxEncoder(cdc)) 31 cliCtx := context.NewCLIContext().WithCodec(cdc) 32 33 proposalTitle, err := cmd.Flags().GetString(govcli.FlagTitle) 34 if err != nil { 35 return fmt.Errorf("proposal title: %s", err) 36 } 37 proposalDescr, err := cmd.Flags().GetString(govcli.FlagDescription) 38 if err != nil { 39 return fmt.Errorf("proposal description: %s", err) 40 } 41 addrs := strings.Split(strings.TrimSpace(args[0]), ",") 42 sort.Strings(addrs) 43 44 proposal := types.UpdateDeploymentWhitelistProposal{ 45 Title: proposalTitle, 46 Description: proposalDescr, 47 DistributorAddrs: addrs, 48 } 49 50 err = proposal.ValidateBasic() 51 if err != nil { 52 return err 53 } 54 55 deposit, err := sdk.ParseCoins(viper.GetString(govcli.FlagDeposit)) 56 if err != nil { 57 return err 58 } 59 60 msg := gov.NewMsgSubmitProposal(&proposal, deposit, cliCtx.GetFromAddress()) 61 return utils.GenerateOrBroadcastMsgs(cliCtx, txBldr, []sdk.Msg{msg}) 62 }, 63 } 64 65 // proposal flags 66 cmd.Flags().String(govcli.FlagTitle, "", "Title of proposal") 67 cmd.Flags().String(govcli.FlagDescription, "", "Description of proposal") 68 cmd.Flags().String(govcli.FlagDeposit, "", "Deposit of proposal") 69 70 return cmd 71 } 72 73 const isDelete = "delete" 74 75 func ProposalUpdateWASMContractMethodBlockedListCmd(cdcP *codec.CodecProxy, reg interfacetypes.InterfaceRegistry) *cobra.Command { 76 cmd := &cobra.Command{ 77 Use: "update-wasm-contract-method-blocked-list [contract address] [comma-separated methods]", 78 Short: "Submit an update wasm contract deployment whitelist proposal", 79 Args: cobra.ExactArgs(2), 80 RunE: func(cmd *cobra.Command, args []string) error { 81 cdc := cdcP.GetCdc() 82 inBuf := bufio.NewReader(cmd.InOrStdin()) 83 txBldr := auth.NewTxBuilderFromCLI(inBuf).WithTxEncoder(utils.GetTxEncoder(cdc)) 84 cliCtx := context.NewCLIContext().WithCodec(cdc) 85 86 methods := strings.Split(strings.TrimSpace(args[1]), ",") 87 sort.Strings(methods) 88 var extraMethods []*types.Method 89 for _, m := range methods { 90 extraMethods = append(extraMethods, &types.Method{ 91 Name: m, 92 }) 93 } 94 95 proposal := types.UpdateWASMContractMethodBlockedListProposal{ 96 Title: viper.GetString(govcli.FlagTitle), 97 Description: viper.GetString(govcli.FlagDescription), 98 BlockedMethods: &types.ContractMethods{ 99 ContractAddr: args[0], 100 Methods: extraMethods, 101 }, 102 IsDelete: viper.GetBool(isDelete), 103 } 104 105 if err := proposal.ValidateBasic(); err != nil { 106 return err 107 } 108 109 deposit, err := sdk.ParseCoins(viper.GetString(govcli.FlagDeposit)) 110 if err != nil { 111 return err 112 } 113 114 msg := gov.NewMsgSubmitProposal(&proposal, deposit, cliCtx.GetFromAddress()) 115 return utils.GenerateOrBroadcastMsgs(cliCtx, txBldr, []sdk.Msg{msg}) 116 }, 117 } 118 119 // proposal flags 120 cmd.Flags().String(govcli.FlagTitle, "", "Title of proposal") 121 cmd.Flags().String(govcli.FlagDescription, "", "Description of proposal") 122 cmd.Flags().String(govcli.FlagDeposit, "", "Deposit of proposal") 123 cmd.Flags().Bool(isDelete, false, "True to delete methods and default to add") 124 125 return cmd 126 }