github.com/lino-network/lino@v0.6.11/x/developer/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 "github.com/lino-network/lino/x/developer/types" 11 ) 12 13 const ( 14 FlagWebsite = "website" 15 FlagDescription = "description" 16 FlagAppMeta = "appmeta" 17 FlagIdaPrice = "ida-price" 18 FlagFrom = "from" 19 FlagTo = "to" 20 FlagActive = "active" 21 FlagAmount = "amount" 22 FlagApp = "app" 23 ) 24 25 func GetTxCmd(cdc *codec.Codec) *cobra.Command { 26 cmd := &cobra.Command{ 27 Use: types.ModuleName, 28 Short: "Developer tx subcommands", 29 DisableFlagParsing: true, 30 SuggestionsMinimumDistance: 2, 31 RunE: client.ValidateCmd, 32 } 33 34 cmd.AddCommand(client.PostCommands( 35 GetCmdRegister(cdc), 36 GetCmdUpdate(cdc), 37 GetCmdIDAIssue(cdc), 38 GetCmdIDAMint(cdc), 39 GetCmdIDATransfer(cdc), 40 GetCmdIDAAuthorize(cdc), 41 GetCmdUpdateAffiliated(cdc), 42 )...) 43 44 return cmd 45 } 46 47 // GetCmdRegister - register as developer. 48 func GetCmdRegister(cdc *codec.Codec) *cobra.Command { 49 cmd := &cobra.Command{ 50 Use: "register", 51 Short: "register <username> --website <web> --description <desc> --appmeta <meta>", 52 Args: cobra.ExactArgs(1), 53 RunE: func(cmd *cobra.Command, args []string) error { 54 ctx := client.NewCoreContextFromViper().WithTxEncoder(linotypes.TxEncoder(cdc)) 55 app := args[0] 56 msg := types.NewDeveloperRegisterMsg( 57 app, 58 viper.GetString(FlagWebsite), 59 viper.GetString(FlagDescription), 60 viper.GetString(FlagAppMeta)) 61 return ctx.DoTxPrintResponse(msg) 62 }, 63 } 64 cmd.Flags().String(FlagWebsite, "", "website of the app") 65 cmd.Flags().String(FlagDescription, "", "description of the app") 66 cmd.Flags().String(FlagAppMeta, "", "meta-data of the app") 67 return cmd 68 } 69 70 // GetCmdUpdate - update App info 71 func GetCmdUpdate(cdc *codec.Codec) *cobra.Command { 72 cmd := &cobra.Command{ 73 Use: "update", 74 Short: "update <app> --website <web> --description <desc> --appmeta <meta>", 75 Args: cobra.ExactArgs(1), 76 RunE: func(cmd *cobra.Command, args []string) error { 77 ctx := client.NewCoreContextFromViper().WithTxEncoder(linotypes.TxEncoder(cdc)) 78 app := linotypes.AccountKey(args[0]) 79 msg := types.DeveloperUpdateMsg{ 80 Username: app, 81 Website: viper.GetString(FlagWebsite), 82 Description: viper.GetString(FlagDescription), 83 AppMetaData: viper.GetString(FlagAppMeta), 84 } 85 return ctx.DoTxPrintResponse(msg) 86 }, 87 } 88 cmd.Flags().String(FlagWebsite, "", "website of the app") 89 cmd.Flags().String(FlagDescription, "", "description of the app") 90 cmd.Flags().String(FlagAppMeta, "", "meta-data of the app") 91 return cmd 92 } 93 94 // GetCmdIDAIssue - issue an IDA for the app. 95 // ida-issue dlivetv --ida-price 1 96 func GetCmdIDAIssue(cdc *codec.Codec) *cobra.Command { 97 cmd := &cobra.Command{ 98 Use: "ida-issue", 99 Short: "ida-issue <app> --ida-price <amount>, amount is an integer in [1, 1000], 1 = 0.001 USD", 100 Args: cobra.ExactArgs(1), 101 RunE: func(cmd *cobra.Command, args []string) error { 102 ctx := client.NewCoreContextFromViper().WithTxEncoder(linotypes.TxEncoder(cdc)) 103 app := linotypes.AccountKey(args[0]) 104 msg := types.IDAIssueMsg{ 105 Username: app, 106 IDAPrice: viper.GetInt64(FlagIdaPrice), 107 } 108 return ctx.DoTxPrintResponse(msg) 109 }, 110 } 111 cmd.Flags().Int64(FlagIdaPrice, 0, 112 "The price of IDA in unit of 0.001 USD, valid range: [1, 1000]") 113 return cmd 114 } 115 116 // GetCmdIDAMint - mint IDA for the app 117 func GetCmdIDAMint(cdc *codec.Codec) *cobra.Command { 118 cmd := &cobra.Command{ 119 Use: "ida-mint", 120 Short: "ida-mint <app> --amount <lino-amount>", 121 Args: cobra.ExactArgs(1), 122 RunE: func(cmd *cobra.Command, args []string) error { 123 ctx := client.NewCoreContextFromViper().WithTxEncoder(linotypes.TxEncoder(cdc)) 124 app := linotypes.AccountKey(args[0]) 125 amount := viper.GetString(FlagAmount) 126 msg := types.IDAMintMsg{ 127 Username: app, 128 Amount: amount, 129 } 130 return ctx.DoTxPrintResponse(msg) 131 }, 132 } 133 cmd.Flags().Int64(FlagAmount, 0, 134 "Amount of LINO to convert to IDA") 135 _ = cmd.MarkFlagRequired(FlagAmount) 136 return cmd 137 } 138 139 // GetCmdIDATransfer - transfer ida from or to some account. 140 func GetCmdIDATransfer(cdc *codec.Codec) *cobra.Command { 141 cmd := &cobra.Command{ 142 Use: "ida-transfer", 143 Short: "ida-transfer <signer> <app> --from <foo> --to <bar> --amount <amount>", 144 Args: cobra.ExactArgs(2), 145 RunE: func(cmd *cobra.Command, args []string) error { 146 ctx := client.NewCoreContextFromViper().WithTxEncoder(linotypes.TxEncoder(cdc)) 147 signer := linotypes.AccountKey(args[0]) 148 app := linotypes.AccountKey(args[1]) 149 amount := linotypes.IDAStr(viper.GetString(FlagAmount)) 150 from := linotypes.AccountKey(viper.GetString(FlagFrom)) 151 to := linotypes.AccountKey(viper.GetString(FlagTo)) 152 msg := types.IDATransferMsg{ 153 App: app, 154 Amount: amount, 155 From: from, 156 To: to, 157 Signer: signer, 158 } 159 return ctx.DoTxPrintResponse(msg) 160 }, 161 } 162 cmd.Flags().String(FlagAmount, "", "amount of IDA") 163 cmd.Flags().String(FlagTo, "", "receipient of this transfer") 164 cmd.Flags().String(FlagFrom, "", "sender of this transfer") 165 return cmd 166 } 167 168 // GetCmdIDAAuthorize - 169 func GetCmdIDAAuthorize(cdc *codec.Codec) *cobra.Command { 170 cmd := &cobra.Command{ 171 Use: "ida-auth", 172 Short: "ida-auth <username> <app> --active=true/false", 173 Args: cobra.ExactArgs(2), 174 RunE: func(cmd *cobra.Command, args []string) error { 175 ctx := client.NewCoreContextFromViper().WithTxEncoder(linotypes.TxEncoder(cdc)) 176 user := linotypes.AccountKey(args[0]) 177 app := linotypes.AccountKey(args[1]) 178 active := viper.GetBool(FlagActive) 179 msg := types.IDAAuthorizeMsg{ 180 Username: user, 181 App: app, 182 Activate: active, 183 } 184 return ctx.DoTxPrintResponse(msg) 185 }, 186 } 187 cmd.Flags().Bool(FlagActive, false, "true = active IDA account") 188 _ = cmd.MarkFlagRequired(FlagActive) 189 return cmd 190 } 191 192 // GetCmdUpdateAffiliated - 193 func GetCmdUpdateAffiliated(cdc *codec.Codec) *cobra.Command { 194 cmd := &cobra.Command{ 195 Use: "affiliated", 196 Short: "affiliated <app> <username> --active=true/false", 197 Args: cobra.ExactArgs(2), 198 RunE: func(cmd *cobra.Command, args []string) error { 199 ctx := client.NewCoreContextFromViper().WithTxEncoder(linotypes.TxEncoder(cdc)) 200 app := linotypes.AccountKey(args[0]) 201 user := linotypes.AccountKey(args[1]) 202 active := viper.GetBool(FlagActive) 203 msg := types.UpdateAffiliatedMsg{ 204 App: app, 205 Username: user, 206 Activate: active, 207 } 208 return ctx.DoTxPrintResponse(msg) 209 }, 210 } 211 cmd.Flags().Bool(FlagActive, false, "true = add <username> as an affiliated of <app>") 212 _ = cmd.MarkFlagRequired(FlagActive) 213 return cmd 214 }