github.com/loomnetwork/gamechain@v0.0.0-20200406110549-36c47eb97a92/cli/cmd/contract_configuration.go (about) 1 package cmd 2 3 import ( 4 "encoding/json" 5 "fmt" 6 "github.com/loomnetwork/gamechain/tools/battleground_utility" 7 "github.com/loomnetwork/gamechain/types/zb/zb_calls" 8 "github.com/loomnetwork/gamechain/types/zb/zb_data" 9 "github.com/loomnetwork/go-loom" 10 "github.com/loomnetwork/go-loom/auth" 11 "github.com/spf13/cobra" 12 "math/big" 13 "strings" 14 ) 15 16 var configurationCmdArgs struct { 17 fiatPurchaseContractVersion uint64 18 initialFiatPurchaseTxId string 19 useCardLibraryAsUserCollection bool 20 cardCollectionSyncDataVersion string 21 } 22 23 var configuration_setDataWipeConfigurationCmdArgs struct { 24 version string 25 wipeDecks bool 26 wipeOverlordsUserInstances bool 27 } 28 29 var configuration_get = &cobra.Command{ 30 Use: "get", 31 Short: "get contract configuration", 32 RunE: func(cmd *cobra.Command, args []string) error { 33 signer := auth.NewEd25519Signer(commonTxObjs.privateKey) 34 callerAddr := loom.Address{ 35 ChainID: commonTxObjs.rpcClient.GetChainID(), 36 Local: loom.LocalAddressFromPublicKey(signer.PublicKey()), 37 } 38 39 var resp zb_calls.GetContractConfigurationResponse 40 _, err := commonTxObjs.contract.StaticCall("GetContractConfiguration", &zb_calls.EmptyRequest{}, callerAddr, &resp) 41 if err != nil { 42 return err 43 } 44 45 switch strings.ToLower(rootCmdArgs.outputFormat) { 46 case "json": 47 err := battleground_utility.PrintProtoMessageAsJsonToStdout(resp.Configuration) 48 if err != nil { 49 return err 50 } 51 default: 52 fmt.Printf("%+v\n", resp.Configuration) 53 } 54 55 return nil 56 }, 57 } 58 59 var configurationCmd = &cobra.Command{ 60 Use: "contract_configuration", 61 Short: "manipulates contract configuration", 62 RunE: func(cmd *cobra.Command, args []string) error { 63 return cmd.Help() 64 }, 65 } 66 67 var configuration_setFiatPurchaseContractVersionCmd = &cobra.Command{ 68 Use: "set_fiat_purchase_contract_version", 69 Short: "sets fiatPurchaseContractVersion", 70 RunE: func(cmd *cobra.Command, args []string) error { 71 request := &zb_calls.UpdateContractConfigurationRequest{ 72 SetFiatPurchaseContractVersion: true, 73 FiatPurchaseContractVersion: configurationCmdArgs.fiatPurchaseContractVersion, 74 } 75 return configurationSetMain(request) 76 }, 77 } 78 79 var configuration_setInitialFiatPurchaseTxIdCmd = &cobra.Command{ 80 Use: "set_initial_fiat_purchase_txid", 81 Short: "sets initialFiatPurchaseTxId", 82 RunE: func(cmd *cobra.Command, args []string) error { 83 initialFiatPurchaseTxId, ok := new(big.Int).SetString(configurationCmdArgs.initialFiatPurchaseTxId, 10) 84 if !ok { 85 return fmt.Errorf("failed to parse %s as a number", configurationCmdArgs.initialFiatPurchaseTxId) 86 } 87 88 request := &zb_calls.UpdateContractConfigurationRequest{ 89 SetInitialFiatPurchaseTxId: true, 90 InitialFiatPurchaseTxId: battleground_utility.MarshalBigIntProto(initialFiatPurchaseTxId), 91 } 92 return configurationSetMain(request) 93 }, 94 } 95 96 var configuration_useCardLibraryAsUserCollectionCmd = &cobra.Command{ 97 Use: "set_use_card_library_as_user_collection", 98 Short: "sets useCardLibraryAsUserCollection", 99 RunE: func(cmd *cobra.Command, args []string) error { 100 request := &zb_calls.UpdateContractConfigurationRequest{ 101 SetUseCardLibraryAsUserCollection: true, 102 UseCardLibraryAsUserCollection: configurationCmdArgs.useCardLibraryAsUserCollection, 103 } 104 return configurationSetMain(request) 105 }, 106 } 107 108 var configuration_cardCollectionSyncDataVersionCmd = &cobra.Command{ 109 Use: "set_card_collection_sync_data_version", 110 Short: "sets the data version to be used for card collection sync operations", 111 RunE: func(cmd *cobra.Command, args []string) error { 112 request := &zb_calls.UpdateContractConfigurationRequest{ 113 SetCardCollectionSyncDataVersion: true, 114 CardCollectionSyncDataVersion: configurationCmdArgs.cardCollectionSyncDataVersion, 115 } 116 return configurationSetMain(request) 117 }, 118 } 119 120 var configuration_setDataWipeConfigurationCmd = &cobra.Command{ 121 Use: "set_data_wipe_configuration", 122 Short: "sets data wipe configuration", 123 RunE: func(cmd *cobra.Command, args []string) error { 124 request := &zb_calls.UpdateContractConfigurationRequest{ 125 SetDataWipeConfiguration: true, 126 DataWipeConfiguration: &zb_data.DataWipeConfiguration{ 127 Version: configuration_setDataWipeConfigurationCmdArgs.version, 128 WipeDecks: configuration_setDataWipeConfigurationCmdArgs.wipeDecks, 129 WipeOverlordUserInstances: configuration_setDataWipeConfigurationCmdArgs.wipeOverlordsUserInstances, 130 }, 131 } 132 return configurationSetMain(request) 133 }, 134 } 135 136 func configurationSetMain(configurationRequest *zb_calls.UpdateContractConfigurationRequest) error { 137 signer := auth.NewEd25519Signer(commonTxObjs.privateKey) 138 var result zb_calls.EmptyResponse 139 140 _, err := commonTxObjs.contract.Call("UpdateContractConfiguration", configurationRequest, signer, &result) 141 if err != nil { 142 return fmt.Errorf("error encountered while calling UpdateContractConfiguration: %s", err.Error()) 143 } 144 145 switch strings.ToLower(rootCmdArgs.outputFormat) { 146 case "json": 147 output, err := json.Marshal(map[string]interface{}{"success": true}) 148 if err != nil { 149 return err 150 } 151 fmt.Println(string(output)) 152 default: 153 fmt.Println("success") 154 } 155 156 return nil 157 } 158 159 func init() { 160 configuration_setFiatPurchaseContractVersionCmd.Flags().Uint64VarP(&configurationCmdArgs.fiatPurchaseContractVersion, "value", "v", 3, "") 161 configuration_setInitialFiatPurchaseTxIdCmd.Flags().StringVarP(&configurationCmdArgs.initialFiatPurchaseTxId, "value", "v", "0", "Starting txId used for transaction receipt created by the contract") 162 configuration_useCardLibraryAsUserCollectionCmd.Flags().BoolVarP(&configurationCmdArgs.useCardLibraryAsUserCollection, "value", "v", false, "If false, user personal collection is used, if true, card library is used to make a full fake collection") 163 configuration_cardCollectionSyncDataVersionCmd.Flags().StringVarP(&configurationCmdArgs.cardCollectionSyncDataVersion, "value", "v", "", "") 164 165 configuration_setDataWipeConfigurationCmd.Flags().StringVarP(&configuration_setDataWipeConfigurationCmdArgs.version, "version", "v", "v1", "Data version to wipe on") 166 configuration_setDataWipeConfigurationCmd.Flags().BoolVarP(&configuration_setDataWipeConfigurationCmdArgs.wipeDecks, "wipeDecks", "d", false, "Whether to wipe user decks") 167 configuration_setDataWipeConfigurationCmd.Flags().BoolVarP(&configuration_setDataWipeConfigurationCmdArgs.wipeOverlordsUserInstances, "wipeOverlords", "o", false, "Whether to wipe user overlords progress") 168 _ = configuration_setFiatPurchaseContractVersionCmd.MarkFlagRequired("value") 169 _ = configuration_setInitialFiatPurchaseTxIdCmd.MarkFlagRequired("value") 170 _ = configuration_useCardLibraryAsUserCollectionCmd.MarkFlagRequired("value") 171 _ = configuration_cardCollectionSyncDataVersionCmd.MarkFlagRequired("value") 172 _ = configuration_setDataWipeConfigurationCmd.MarkFlagRequired("version") 173 174 configurationCmd.AddCommand( 175 configuration_get, 176 configuration_setFiatPurchaseContractVersionCmd, 177 configuration_setInitialFiatPurchaseTxIdCmd, 178 configuration_useCardLibraryAsUserCollectionCmd, 179 configuration_cardCollectionSyncDataVersionCmd, 180 configuration_setDataWipeConfigurationCmd, 181 ) 182 183 rootCmd.AddCommand(configurationCmd) 184 }