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  }