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 }