github.com/loomnetwork/gamechain@v0.0.0-20200406110549-36c47eb97a92/cli/cmd/update_init.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 "os" 9 "strings" 10 11 "github.com/gogo/protobuf/jsonpb" 12 "github.com/loomnetwork/go-loom/auth" 13 "github.com/spf13/cobra" 14 ) 15 16 var updateInitCmdArgs struct { 17 file string 18 oldVersion string 19 } 20 21 var updateInitCmd = &cobra.Command{ 22 Use: "update_init", 23 Short: "updates the init data for zombiebattleground", 24 RunE: func(cmd *cobra.Command, args []string) error { 25 signer := auth.NewEd25519Signer(commonTxObjs.privateKey) 26 var initData zb_data.InitData 27 28 if updateInitCmdArgs.file == "" { 29 return fmt.Errorf("file name not provided") 30 } 31 32 f, err := os.Open(updateInitCmdArgs.file) 33 if err != nil { 34 return fmt.Errorf("error reading file: %s", err.Error()) 35 } 36 defer f.Close() 37 38 if err := new(jsonpb.Unmarshaler).Unmarshal(f, &initData); err != nil { 39 return fmt.Errorf("error parsing JSON file: %s", err.Error()) 40 } 41 42 if initData.Version == "" { 43 return fmt.Errorf("version not specified") 44 } 45 46 updateInitData := zb_calls.UpdateInitRequest{ 47 InitData: &initData, 48 } 49 50 _, err = commonTxObjs.contract.Call("UpdateInit", &updateInitData, signer, nil) 51 if err != nil { 52 return fmt.Errorf("error encountered while calling UpdateInit: %s", err.Error()) 53 } 54 55 switch strings.ToLower(rootCmdArgs.outputFormat) { 56 case "json": 57 output, err := json.Marshal(map[string]interface{}{"success": true}) 58 if err != nil { 59 return err 60 } 61 fmt.Println(string(output)) 62 default: 63 fmt.Println("success") 64 } 65 66 return nil 67 }, 68 } 69 70 func init() { 71 rootCmd.AddCommand(updateInitCmd) 72 73 updateInitCmd.Flags().StringVarP(&updateInitCmdArgs.file, "file", "f", "", "File of init data to be updated in serialized json format") 74 75 _ = updateInitCmd.MarkFlagRequired("file") 76 }