package cli import ( "fmt" "github.com/spf13/cobra" "github.com/cosmos/cosmos-sdk/client" "github.com/cosmos/cosmos-sdk/client/flags" "github.com/cosmos/cosmos-sdk/client/tx" sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/cosmos-sdk/version" "github.com/0glabs/0g-chain/x/savings/types" ) // GetTxCmd returns the transaction commands for this module func GetTxCmd() *cobra.Command { savingsTxCmd := &cobra.Command{ Use: types.ModuleName, Short: "savings transactions subcommands", DisableFlagParsing: true, SuggestionsMinimumDistance: 2, RunE: client.ValidateCmd, } cmds := []*cobra.Command{ getCmdDeposit(), getCmdWithdraw(), } for _, cmd := range cmds { flags.AddTxFlagsToCmd(cmd) } savingsTxCmd.AddCommand(cmds...) return savingsTxCmd } func getCmdDeposit() *cobra.Command { return &cobra.Command{ Use: "deposit [amount]", Short: "deposit coins to savings", Example: fmt.Sprintf( `%s tx %s deposit 10000000ukava,100000000usdx --from `, version.AppName, types.ModuleName, ), RunE: func(cmd *cobra.Command, args []string) error { clientCtx, err := client.GetClientTxContext(cmd) if err != nil { return err } amount, err := sdk.ParseCoinsNormalized(args[0]) if err != nil { return err } msg := types.NewMsgDeposit(clientCtx.GetFromAddress(), amount) if err := msg.ValidateBasic(); err != nil { return err } return tx.GenerateOrBroadcastTxCLI(clientCtx, cmd.Flags(), &msg) }, } } func getCmdWithdraw() *cobra.Command { return &cobra.Command{ Use: "withdraw [amount]", Short: "withdraw coins from savings", Example: fmt.Sprintf( `%s tx %s withdraw 10000000ukava,100000000usdx --from `, version.AppName, types.ModuleName, ), RunE: func(cmd *cobra.Command, args []string) error { clientCtx, err := client.GetClientTxContext(cmd) if err != nil { return err } amount, err := sdk.ParseCoinsNormalized(args[0]) if err != nil { return err } msg := types.NewMsgWithdraw(clientCtx.GetFromAddress(), amount) if err := msg.ValidateBasic(); err != nil { return err } return tx.GenerateOrBroadcastTxCLI(clientCtx, cmd.Flags(), &msg) }, } }