package gov import ( "fmt" autocliv1 "cosmossdk.io/api/cosmos/autocli/v1" govv1 "cosmossdk.io/api/cosmos/gov/v1" "git.cw.tr/mukan-network/mukan-sdk/version" ) // AutoCLIOptions implements the autocli.HasAutoCLIConfig interface. func (am AppModule) AutoCLIOptions() *autocliv1.ModuleOptions { return &autocliv1.ModuleOptions{ Query: &autocliv1.ServiceCommandDescriptor{ Service: govv1.Query_ServiceDesc.ServiceName, RpcCommandOptions: []*autocliv1.RpcCommandOptions{ { RpcMethod: "Params", Use: "params", Short: "Query the parameters of the governance process", Long: "Query the parameters of the governance process. Specify specific param types (voting|tallying|deposit) to filter results.", PositionalArgs: []*autocliv1.PositionalArgDescriptor{ {ProtoField: "params_type", Optional: true}, }, }, { RpcMethod: "Proposals", Use: "proposals", Short: "Query proposals with optional filters", Example: fmt.Sprintf("%[1]s query gov proposals --depositor cosmos1...\n%[1]s query gov proposals --voter cosmos1...\n%[1]s query gov proposals --proposal-status (unspecified | deposit-period | voting-period | passed | rejected | failed)", version.AppName), }, { RpcMethod: "Proposal", Use: "proposal [proposal-id]", Alias: []string{"proposer"}, Short: "Query details of a single proposal", Example: fmt.Sprintf("%s query gov proposal 1", version.AppName), PositionalArgs: []*autocliv1.PositionalArgDescriptor{ {ProtoField: "proposal_id"}, }, }, { RpcMethod: "Vote", Use: "vote [proposal-id] [voter-addr]", Short: "Query details of a single vote", Example: fmt.Sprintf("%s query gov vote 1 cosmos1...", version.AppName), PositionalArgs: []*autocliv1.PositionalArgDescriptor{ {ProtoField: "proposal_id"}, {ProtoField: "voter"}, }, }, { RpcMethod: "Votes", Use: "votes [proposal-id]", Short: "Query votes of a single proposal", Example: fmt.Sprintf("%s query gov votes 1", version.AppName), PositionalArgs: []*autocliv1.PositionalArgDescriptor{ {ProtoField: "proposal_id"}, }, }, { RpcMethod: "Deposit", Use: "deposit [proposal-id] [depositer-addr]", Short: "Query details of a deposit", PositionalArgs: []*autocliv1.PositionalArgDescriptor{ {ProtoField: "proposal_id"}, {ProtoField: "depositor"}, }, }, { RpcMethod: "Deposits", Use: "deposits [proposal-id]", Short: "Query deposits on a proposal", PositionalArgs: []*autocliv1.PositionalArgDescriptor{ {ProtoField: "proposal_id"}, }, }, { RpcMethod: "TallyResult", Use: "tally [proposal-id]", Short: "Query the tally of a proposal vote", Example: fmt.Sprintf("%s query gov tally 1", version.AppName), PositionalArgs: []*autocliv1.PositionalArgDescriptor{ {ProtoField: "proposal_id"}, }, }, { RpcMethod: "Constitution", Use: "constitution", Short: "Query the current chain constitution", }, }, EnhanceCustomCommand: true, // We still have manual commands in gov that we want to keep }, Tx: &autocliv1.ServiceCommandDescriptor{ Service: govv1.Msg_ServiceDesc.ServiceName, RpcCommandOptions: []*autocliv1.RpcCommandOptions{ { RpcMethod: "Deposit", Use: "deposit [proposal-id] [deposit]", Short: "Deposit tokens for an active proposal", Long: fmt.Sprintf(`Submit a deposit for an active proposal. You can find the proposal-id by running "%s query gov proposals"`, version.AppName), Example: fmt.Sprintf(`$ %s tx gov deposit 1 10stake --from mykey`, version.AppName), PositionalArgs: []*autocliv1.PositionalArgDescriptor{ {ProtoField: "proposal_id"}, {ProtoField: "amount", Varargs: true}, }, }, { RpcMethod: "CancelProposal", Use: "cancel-proposal [proposal-id]", Short: "Cancel governance proposal before the voting period ends. Must be signed by the proposal creator.", Example: fmt.Sprintf(`$ %s tx gov cancel-proposal 1 --from mykey`, version.AppName), PositionalArgs: []*autocliv1.PositionalArgDescriptor{ {ProtoField: "proposal_id"}, }, }, { RpcMethod: "Vote", Use: "vote [proposal-id] [option]", Short: "Vote for an active proposal, options: yes/no/no-with-veto/abstain", Long: fmt.Sprintf(`Submit a vote for an active proposal. Use the --metadata to optionally give a reason. You can find the proposal-id by running "%s query gov proposals"`, version.AppName), Example: fmt.Sprintf("$ %s tx gov vote 1 yes --from mykey", version.AppName), PositionalArgs: []*autocliv1.PositionalArgDescriptor{ {ProtoField: "proposal_id"}, {ProtoField: "option"}, }, FlagOptions: map[string]*autocliv1.FlagOptions{ "metadata": {Name: "metadata", Usage: "Add a description to the vote"}, }, }, { RpcMethod: "UpdateParams", Use: "update-params-proposal [params]", Short: "Submit a proposal to update gov module params. Note: the entire params must be provided.", Long: fmt.Sprintf("Submit a proposal to update gov module params. Note: the entire params must be provided.\n See the fields to fill in by running `%s query gov params --output json`", version.AppName), Example: fmt.Sprintf(`%s tx gov update-params-proposal '{ params }'`, version.AppName), PositionalArgs: []*autocliv1.PositionalArgDescriptor{{ProtoField: "params"}}, GovProposal: true, }, }, EnhanceCustomCommand: false, // use custom commands only until v0.51 }, } }