github.com/MetalBlockchain/metalgo@v1.11.9/vms/example/xsvm/cmd/account/flags.go (about)

     1  // Copyright (C) 2019-2024, Ava Labs, Inc. All rights reserved.
     2  // See the file LICENSE for licensing terms.
     3  
     4  package account
     5  
     6  import (
     7  	"github.com/spf13/pflag"
     8  
     9  	"github.com/MetalBlockchain/metalgo/genesis"
    10  	"github.com/MetalBlockchain/metalgo/ids"
    11  	"github.com/MetalBlockchain/metalgo/wallet/subnet/primary"
    12  )
    13  
    14  const (
    15  	URIKey     = "uri"
    16  	ChainIDKey = "chain-id"
    17  	AddressKey = "address"
    18  	AssetIDKey = "asset-id"
    19  )
    20  
    21  func AddFlags(flags *pflag.FlagSet) {
    22  	flags.String(URIKey, primary.LocalAPIURI, "API URI to use to fetch the account state")
    23  	flags.String(ChainIDKey, "", "Chain to fetch the account state on")
    24  	flags.String(AddressKey, genesis.EWOQKey.Address().String(), "Address of the account to fetch")
    25  	flags.String(AssetIDKey, "[chain-id]", "Asset balance to fetch")
    26  }
    27  
    28  type Config struct {
    29  	URI     string
    30  	ChainID string
    31  	Address ids.ShortID
    32  	AssetID ids.ID
    33  }
    34  
    35  func ParseFlags(flags *pflag.FlagSet, args []string) (*Config, error) {
    36  	if err := flags.Parse(args); err != nil {
    37  		return nil, err
    38  	}
    39  
    40  	if err := flags.Parse(args); err != nil {
    41  		return nil, err
    42  	}
    43  
    44  	uri, err := flags.GetString(URIKey)
    45  	if err != nil {
    46  		return nil, err
    47  	}
    48  
    49  	chainID, err := flags.GetString(ChainIDKey)
    50  	if err != nil {
    51  		return nil, err
    52  	}
    53  
    54  	addrStr, err := flags.GetString(AddressKey)
    55  	if err != nil {
    56  		return nil, err
    57  	}
    58  
    59  	addr, err := ids.ShortFromString(addrStr)
    60  	if err != nil {
    61  		return nil, err
    62  	}
    63  
    64  	assetIDStr := chainID
    65  	if flags.Changed(AssetIDKey) {
    66  		assetIDStr, err = flags.GetString(AssetIDKey)
    67  		if err != nil {
    68  			return nil, err
    69  		}
    70  	}
    71  
    72  	assetID, err := ids.FromString(assetIDStr)
    73  	if err != nil {
    74  		return nil, err
    75  	}
    76  
    77  	return &Config{
    78  		URI:     uri,
    79  		ChainID: chainID,
    80  		Address: addr,
    81  		AssetID: assetID,
    82  	}, nil
    83  }