github.com/lino-network/lino@v0.6.11/x/vote/client/cli/tx.go (about) 1 package cli 2 3 import ( 4 "github.com/cosmos/cosmos-sdk/codec" 5 "github.com/spf13/cobra" 6 "github.com/spf13/viper" 7 8 "github.com/lino-network/lino/client" 9 linotypes "github.com/lino-network/lino/types" 10 types "github.com/lino-network/lino/x/vote/types" 11 ) 12 13 const ( 14 FlagAmount = "amount" 15 FlagTo = "to" 16 ) 17 18 func GetTxCmd(cdc *codec.Codec) *cobra.Command { 19 cmd := &cobra.Command{ 20 Use: types.ModuleName, 21 Short: "vote tx subcommands", 22 DisableFlagParsing: true, 23 SuggestionsMinimumDistance: 2, 24 RunE: client.ValidateCmd, 25 } 26 27 cmd.AddCommand(client.PostCommands( 28 GetCmdStakein(cdc), 29 GetCmdStakeout(cdc), 30 GetCmdClaimInterest(cdc), 31 GetCmdStakeinFor(cdc), 32 )...) 33 34 return cmd 35 } 36 37 // GetCmdStakein - stakein 38 func GetCmdStakein(cdc *codec.Codec) *cobra.Command { 39 cmd := &cobra.Command{ 40 Use: "stake-in", 41 Short: "stake-in <username> --amount <lino>", 42 Args: cobra.ExactArgs(1), 43 RunE: func(cmd *cobra.Command, args []string) error { 44 ctx := client.NewCoreContextFromViper().WithTxEncoder(linotypes.TxEncoder(cdc)) 45 user := linotypes.AccountKey(args[0]) 46 amount := viper.GetString(FlagAmount) 47 msg := types.StakeInMsg{ 48 Username: user, 49 Deposit: amount, 50 } 51 return ctx.DoTxPrintResponse(msg) 52 }, 53 } 54 cmd.Flags().String(FlagAmount, "", "amount of stake in") 55 _ = cmd.MarkFlagRequired(FlagAmount) 56 return cmd 57 } 58 59 // GetCmdStakeout - 60 func GetCmdStakeout(cdc *codec.Codec) *cobra.Command { 61 cmd := &cobra.Command{ 62 Use: "stake-out", 63 Short: "stake-out <username> --amount <lino>", 64 Args: cobra.ExactArgs(1), 65 RunE: func(cmd *cobra.Command, args []string) error { 66 ctx := client.NewCoreContextFromViper().WithTxEncoder(linotypes.TxEncoder(cdc)) 67 user := linotypes.AccountKey(args[0]) 68 amount := viper.GetString(FlagAmount) 69 msg := types.StakeOutMsg{ 70 Username: user, 71 Amount: amount, 72 } 73 return ctx.DoTxPrintResponse(msg) 74 }, 75 } 76 cmd.Flags().String(FlagAmount, "", "amount of stake in") 77 _ = cmd.MarkFlagRequired(FlagAmount) 78 return cmd 79 } 80 81 // GetCmdClaimInterest - 82 func GetCmdClaimInterest(cdc *codec.Codec) *cobra.Command { 83 cmd := &cobra.Command{ 84 Use: "claim-interest", 85 Short: "claim-interest username", 86 Args: cobra.ExactArgs(1), 87 RunE: func(cmd *cobra.Command, args []string) error { 88 ctx := client.NewCoreContextFromViper().WithTxEncoder(linotypes.TxEncoder(cdc)) 89 username := linotypes.AccountKey(args[0]) 90 msg := types.ClaimInterestMsg{ 91 Username: username, 92 } 93 return ctx.DoTxPrintResponse(msg) 94 }, 95 } 96 return cmd 97 } 98 99 // GetCmdStakeinFor - stakeinFor 100 func GetCmdStakeinFor(cdc *codec.Codec) *cobra.Command { 101 cmd := &cobra.Command{ 102 Use: "stake-in-for", 103 Short: "stake-in-for <from> --to <bar> --amount <lino>", 104 Args: cobra.ExactArgs(1), 105 RunE: func(cmd *cobra.Command, args []string) error { 106 ctx := client.NewCoreContextFromViper().WithTxEncoder(linotypes.TxEncoder(cdc)) 107 from := linotypes.AccountKey(args[0]) 108 to := linotypes.AccountKey(viper.GetString(FlagTo)) 109 amount := viper.GetString(FlagAmount) 110 msg := types.StakeInForMsg{ 111 Sender: from, 112 Deposit: amount, 113 Receiver: to, 114 } 115 return ctx.DoTxPrintResponse(msg) 116 }, 117 } 118 cmd.Flags().String(FlagAmount, "", "amount of stake in") 119 cmd.Flags().String(FlagTo, "", "receiver username") 120 _ = cmd.MarkFlagRequired(FlagTo) 121 _ = cmd.MarkFlagRequired(FlagAmount) 122 return cmd 123 }