github.com/ChainSafe/chainbridge-core@v1.4.2/chains/evm/cli/bridge/query-resource.go (about)

     1  package bridge
     2  
     3  import (
     4  	"fmt"
     5  
     6  	"github.com/ChainSafe/chainbridge-core/chains/evm/cli/flags"
     7  	"github.com/ChainSafe/chainbridge-core/chains/evm/cli/logger"
     8  	"github.com/ChainSafe/chainbridge-core/util"
     9  	"github.com/ethereum/go-ethereum/common"
    10  	"github.com/rs/zerolog/log"
    11  	"github.com/spf13/cobra"
    12  )
    13  
    14  var queryResourceCmd = &cobra.Command{
    15  	Use:   "query-resource",
    16  	Short: "Query the resource ID for a handler contract",
    17  	Long:  "The query-resource subcommand queries the contract address with the provided resource ID for a specific handler contract",
    18  	PreRun: func(cmd *cobra.Command, args []string) {
    19  		logger.LoggerMetadata(cmd.Name(), cmd.Flags())
    20  	},
    21  	PersistentPreRunE: func(cmd *cobra.Command, args []string) error {
    22  		return util.CallPersistentPreRun(cmd, args)
    23  	},
    24  	RunE: queryResource,
    25  	Args: func(cmd *cobra.Command, args []string) error {
    26  		err := ValidateQueryResourceFlags(cmd, args)
    27  		if err != nil {
    28  			return err
    29  		}
    30  		return nil
    31  	},
    32  }
    33  
    34  func BindQueryResourceFlags(cmd *cobra.Command) {
    35  	cmd.Flags().StringVar(&Handler, "handler", "", "Handler contract address")
    36  	cmd.Flags().StringVar(&ResourceID, "resource", "", "Resource ID to query")
    37  	flags.MarkFlagsAsRequired(cmd, "handler", "resource")
    38  }
    39  
    40  func init() {
    41  	BindQueryResourceFlags(queryResourceCmd)
    42  }
    43  
    44  func ValidateQueryResourceFlags(cmd *cobra.Command, args []string) error {
    45  	if !common.IsHexAddress(Handler) {
    46  		return fmt.Errorf("invalid handler address: %s", Handler)
    47  	}
    48  	return nil
    49  }
    50  
    51  func queryResource(cmd *cobra.Command, args []string) error {
    52  	log.Debug().Msgf(`
    53  Querying resource
    54  Handler address: %s
    55  Resource ID: %s`, Handler, ResourceID)
    56  	return nil
    57  }
    58  
    59  /*
    60  func queryResource(cctx *cli.Context) error {
    61  	url := cctx.String("url")
    62  	gasLimit := cctx.Uint64("gasLimit")
    63  	gasPrice := cctx.Uint64("gasPrice")
    64  	sender, err := cliutils.DefineSender(cctx)
    65  	if err != nil {
    66  		return err
    67  	}
    68  	handlerS := cctx.String("handler")
    69  	if !common.IsHexAddress(handlerS) {
    70  		return errors.New("provided handler address is not valid")
    71  	}
    72  	handlerAddr := common.HexToAddress(handlerS)
    73  	resourceIDs := cctx.String("resourceId")
    74  	resourceID := utils.SliceTo32Bytes(common.Hex2Bytes(resourceIDs))
    75  	ethClient, err := client.NewClient(url, false, sender, big.NewInt(0).SetUint64(gasLimit), big.NewInt(0).SetUint64(gasPrice), big.NewFloat(1))
    76  	if err != nil {
    77  		return err
    78  	}
    79  	res, err := utils.QueryResource(ethClient, handlerAddr, resourceID)
    80  	if err != nil {
    81  		return err
    82  	}
    83  	log.Info().Msgf("Resource address that associated with ID %s is %s", common.Bytes2Hex(resourceID[:]), res.String())
    84  	return nil
    85  }
    86  */