github.com/loomnetwork/gamechain@v0.0.0-20200406110549-36c47eb97a92/cli/cmd/create_deck.go (about) 1 package cmd 2 3 import ( 4 "encoding/json" 5 "fmt" 6 "github.com/loomnetwork/gamechain/types/zb/zb_calls" 7 "github.com/loomnetwork/gamechain/types/zb/zb_data" 8 "strings" 9 10 "github.com/loomnetwork/go-loom/auth" 11 "github.com/spf13/cobra" 12 ) 13 14 var createDeckCmdArgs struct { 15 userID string 16 data string 17 version string 18 } 19 20 var createDeckCmd = &cobra.Command{ 21 Use: "create_deck", 22 Short: "create a deck", 23 RunE: func(cmd *cobra.Command, args []string) error { 24 signer := auth.NewEd25519Signer(commonTxObjs.privateKey) 25 var deck zb_data.Deck 26 27 if err := json.Unmarshal([]byte(createDeckCmdArgs.data), &deck); err != nil { 28 return err 29 } 30 31 req := &zb_calls.CreateDeckRequest{ 32 Deck: &deck, 33 UserId: createDeckCmdArgs.userID, 34 Version: createDeckCmdArgs.version, 35 } 36 37 var result zb_calls.CreateDeckResponse 38 _, err := commonTxObjs.contract.Call("CreateDeck", req, signer, &result) 39 if err != nil { 40 return err 41 } 42 43 switch strings.ToLower(rootCmdArgs.outputFormat) { 44 case "json": 45 output, err := json.Marshal(map[string]interface{}{"success": true}) 46 if err != nil { 47 return err 48 } 49 fmt.Println(string(output)) 50 default: 51 fmt.Printf("deck created successfully with id %d\n", result.DeckId) 52 } 53 54 return nil 55 56 }, 57 } 58 59 func init() { 60 rootCmd.AddCommand(createDeckCmd) 61 62 createDeckCmd.Flags().StringVarP(&createDeckCmdArgs.userID, "userId", "u", "loom", "UserId of account") 63 createDeckCmd.Flags().StringVarP(&createDeckCmdArgs.data, "data", "d", "{\"overlord_id\":1, \"name\": \"NewDeck\", \"cards\": [ {\"mouldId\": \"10\", \"amount\": 2}, {\"mouldId\": \"11\", \"amount\": 1} ]}", "Deck data in serialized json format") 64 createDeckCmd.Flags().StringVarP(&createDeckCmdArgs.version, "version", "v", "v1", "Version") 65 66 _ = createDeckCmd.MarkFlagRequired("version") 67 }