github.com/lino-network/lino@v0.6.11/x/post/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/post/types" 11 ) 12 13 const ( 14 FlagAuthor = "author" 15 FlagPostID = "post-id" 16 FlagTitle = "title" 17 FlagContent = "content" 18 FlagPreauth = "preauth" 19 20 FlagDonator = "donator" 21 FlagAmount = "amount" 22 FlagMemo = "memo" 23 FlagApp = "app" 24 FlagSigner = "signer" 25 ) 26 27 func GetTxCmd(cdc *codec.Codec) *cobra.Command { 28 cmd := &cobra.Command{ 29 Use: types.ModuleName, 30 Short: "Post tx subcommands", 31 DisableFlagParsing: true, 32 SuggestionsMinimumDistance: 2, 33 RunE: client.ValidateCmd, 34 } 35 36 cmd.AddCommand(client.PostCommands( 37 GetCmdCreatePost(cdc), 38 GetCmdDeletePost(cdc), 39 GetCmdUpdatePost(cdc), 40 GetCmdDonate(cdc), 41 GetCmdIDADonate(cdc), 42 )...) 43 44 return cmd 45 } 46 47 // GetCmdCreatePost - create post. 48 func GetCmdCreatePost(cdc *codec.Codec) *cobra.Command { 49 cmd := &cobra.Command{ 50 Use: "create ", 51 Short: "create <created-by> --author <author> --post-id <id> --title <title> --content <content> --preauth=true/false", 52 Args: cobra.ExactArgs(1), 53 RunE: func(cmd *cobra.Command, args []string) error { 54 ctx := client.NewCoreContextFromViper().WithTxEncoder(linotypes.TxEncoder(cdc)) 55 createdBy := linotypes.AccountKey(args[0]) 56 msg := types.CreatePostMsg{ 57 Author: linotypes.AccountKey(viper.GetString(FlagAuthor)), 58 PostID: viper.GetString(FlagPostID), 59 Title: viper.GetString(FlagTitle), 60 Content: viper.GetString(FlagContent), 61 CreatedBy: createdBy, 62 Preauth: viper.GetBool(FlagPreauth), 63 } 64 return ctx.DoTxPrintResponse(msg) 65 }, 66 } 67 cmd.Flags().String(FlagAuthor, "", "author of this post") 68 cmd.Flags().String(FlagPostID, "", "post id to identify this post for the author") 69 cmd.Flags().String(FlagTitle, "", "title for the post") 70 cmd.Flags().String(FlagContent, "", "content for the post") 71 cmd.Flags().Bool(FlagPreauth, false, "application(developer) that creates the post") 72 for _, v := range []string{FlagAuthor, FlagPostID, FlagPreauth} { 73 _ = cmd.MarkFlagRequired(v) 74 } 75 return cmd 76 } 77 78 // GetCmdUpdatePost - update post info. 79 func GetCmdUpdatePost(cdc *codec.Codec) *cobra.Command { 80 cmd := &cobra.Command{ 81 Use: "update", 82 Short: "update <author> <postid> --title <title> --content <content>", 83 Args: cobra.ExactArgs(2), 84 RunE: func(cmd *cobra.Command, args []string) error { 85 ctx := client.NewCoreContextFromViper().WithTxEncoder(linotypes.TxEncoder(cdc)) 86 author := linotypes.AccountKey(args[0]) 87 postid := args[1] 88 89 msg := types.UpdatePostMsg{ 90 Author: author, 91 PostID: postid, 92 Title: viper.GetString(FlagTitle), 93 Content: viper.GetString(FlagContent), 94 } 95 return ctx.DoTxPrintResponse(msg) 96 }, 97 } 98 cmd.Flags().String(FlagTitle, "", "title for the post") 99 cmd.Flags().String(FlagContent, "", "content for the post") 100 return cmd 101 } 102 103 // GetCmdDeletePost - 104 func GetCmdDeletePost(cdc *codec.Codec) *cobra.Command { 105 cmd := &cobra.Command{ 106 Use: "delete", 107 Short: "delete <author> <postid>", 108 Args: cobra.ExactArgs(2), 109 RunE: func(cmd *cobra.Command, args []string) error { 110 ctx := client.NewCoreContextFromViper().WithTxEncoder(linotypes.TxEncoder(cdc)) 111 author := linotypes.AccountKey(args[0]) 112 postid := args[1] 113 msg := types.DeletePostMsg{ 114 Author: author, 115 PostID: postid, 116 } 117 return ctx.DoTxPrintResponse(msg) 118 }, 119 } 120 return cmd 121 } 122 123 // GetCmdDonate - 124 func GetCmdDonate(cdc *codec.Codec) *cobra.Command { 125 cmd := &cobra.Command{ 126 Use: "donate", 127 Short: "donate <donator> --amount <amount> --author <author> --post-id <id> --app <app> --memo <memo>", 128 Args: cobra.ExactArgs(1), 129 RunE: func(cmd *cobra.Command, args []string) error { 130 ctx := client.NewCoreContextFromViper().WithTxEncoder(linotypes.TxEncoder(cdc)) 131 from := linotypes.AccountKey(args[0]) 132 msg := types.DonateMsg{ 133 Username: from, 134 Amount: viper.GetString(FlagAmount), 135 Author: linotypes.AccountKey(viper.GetString(FlagAuthor)), 136 PostID: viper.GetString(FlagPostID), 137 FromApp: linotypes.AccountKey(viper.GetString(FlagApp)), 138 Memo: viper.GetString(FlagMemo), 139 } 140 return ctx.DoTxPrintResponse(msg) 141 }, 142 } 143 cmd.Flags().String(FlagAuthor, "", "author of this post") 144 cmd.Flags().String(FlagPostID, "", "post id to identify this post for the author") 145 cmd.Flags().String(FlagAmount, "", "amount of the donation") 146 cmd.Flags().String(FlagMemo, "", "memo of this donation") 147 cmd.Flags().String(FlagApp, "", "donation comes from app") 148 for _, v := range []string{FlagAuthor, FlagPostID, FlagAmount} { 149 _ = cmd.MarkFlagRequired(v) 150 } 151 return cmd 152 } 153 154 // GetCmdIDADonate - 155 func GetCmdIDADonate(cdc *codec.Codec) *cobra.Command { 156 cmd := &cobra.Command{ 157 Use: "ida-donate", 158 Short: "ida-donate <signer> --amount <amount> --author <author> --post-id <id> --app <app> --memo <memo> --donator <donator>", 159 Args: cobra.ExactArgs(1), 160 RunE: func(cmd *cobra.Command, args []string) error { 161 ctx := client.NewCoreContextFromViper().WithTxEncoder(linotypes.TxEncoder(cdc)) 162 signer := linotypes.AccountKey(args[0]) 163 msg := types.IDADonateMsg{ 164 Username: linotypes.AccountKey(viper.GetString(FlagDonator)), 165 App: linotypes.AccountKey(viper.GetString(FlagApp)), 166 Amount: linotypes.IDAStr(viper.GetString(FlagAmount)), 167 Author: linotypes.AccountKey(viper.GetString(FlagAuthor)), 168 PostID: viper.GetString(FlagPostID), 169 Memo: viper.GetString(FlagMemo), 170 Signer: signer, 171 } 172 return ctx.DoTxPrintResponse(msg) 173 }, 174 } 175 cmd.Flags().String(FlagDonator, "", "donator of this transaction") 176 cmd.Flags().String(FlagAuthor, "", "author of the target post") 177 cmd.Flags().String(FlagPostID, "", "post id of the target post") 178 cmd.Flags().String(FlagAmount, "", "amount of the donation") 179 cmd.Flags().String(FlagMemo, "", "memo of this donation") 180 cmd.Flags().String(FlagApp, "", "App's IDA") 181 for _, v := range []string{FlagDonator, FlagAuthor, FlagPostID, FlagAmount, FlagApp} { 182 _ = cmd.MarkFlagRequired(v) 183 } 184 return cmd 185 }