Implement 'listaddresses' CLI command

This commit is contained in:
Ivan Kuznetsov 2017-09-08 09:51:44 +07:00
parent 5b0e4ecc19
commit deb7e2ce03
2 changed files with 30 additions and 0 deletions

19
cli.go
View File

@ -39,6 +39,15 @@ func (cli *CLI) getBalance(address string) {
fmt.Printf("Balance of '%s': %d\n", address, balance) fmt.Printf("Balance of '%s': %d\n", address, balance)
} }
func (cli *CLI) listAddresses() {
wallets := NewWallets()
addresses := wallets.GetAddresses()
for _, address := range addresses {
fmt.Println(address)
}
}
func (cli *CLI) printUsage() { func (cli *CLI) printUsage() {
fmt.Println("Usage:") fmt.Println("Usage:")
fmt.Println(" getbalance -address ADDRESS - Get balance of ADDRESS") fmt.Println(" getbalance -address ADDRESS - Get balance of ADDRESS")
@ -92,6 +101,7 @@ func (cli *CLI) Run() {
getBalanceCmd := flag.NewFlagSet("getbalance", flag.ExitOnError) getBalanceCmd := flag.NewFlagSet("getbalance", flag.ExitOnError)
createBlockchainCmd := flag.NewFlagSet("createblockchain", flag.ExitOnError) createBlockchainCmd := flag.NewFlagSet("createblockchain", flag.ExitOnError)
createWalletCmd := flag.NewFlagSet("createwallet", flag.ExitOnError) createWalletCmd := flag.NewFlagSet("createwallet", flag.ExitOnError)
listAddressesCmd := flag.NewFlagSet("listaddresses", flag.ExitOnError)
sendCmd := flag.NewFlagSet("send", flag.ExitOnError) sendCmd := flag.NewFlagSet("send", flag.ExitOnError)
printChainCmd := flag.NewFlagSet("printchain", flag.ExitOnError) printChainCmd := flag.NewFlagSet("printchain", flag.ExitOnError)
@ -117,6 +127,11 @@ func (cli *CLI) Run() {
if err != nil { if err != nil {
log.Panic(err) log.Panic(err)
} }
case "listaddresses":
err := listAddressesCmd.Parse(os.Args[2:])
if err != nil {
log.Panic(err)
}
case "printchain": case "printchain":
err := printChainCmd.Parse(os.Args[2:]) err := printChainCmd.Parse(os.Args[2:])
if err != nil { if err != nil {
@ -152,6 +167,10 @@ func (cli *CLI) Run() {
cli.createWallet() cli.createWallet()
} }
if listAddressesCmd.Parsed() {
cli.listAddresses()
}
if printChainCmd.Parsed() { if printChainCmd.Parsed() {
cli.printChain() cli.printChain()
} }

View File

@ -120,6 +120,17 @@ func (ws *Wallets) LoadFromFile() error {
return nil return nil
} }
// GetAddresses returns an array of addresses stored in the wallet file
func (ws *Wallets) GetAddresses() []string {
var addresses []string
for address := range ws.Wallets {
addresses = append(addresses, address)
}
return addresses
}
// NewWallets ... // NewWallets ...
func NewWallets() *Wallets { func NewWallets() *Wallets {
wallets := Wallets{} wallets := Wallets{}