From deb7e2ce030fed640c7a504d338c36d0c235a6fc Mon Sep 17 00:00:00 2001 From: Ivan Kuznetsov Date: Fri, 8 Sep 2017 09:51:44 +0700 Subject: [PATCH] Implement 'listaddresses' CLI command --- cli.go | 19 +++++++++++++++++++ wallet.go | 11 +++++++++++ 2 files changed, 30 insertions(+) diff --git a/cli.go b/cli.go index e3bb29e..5b6e24f 100644 --- a/cli.go +++ b/cli.go @@ -39,6 +39,15 @@ func (cli *CLI) getBalance(address string) { 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() { fmt.Println("Usage:") fmt.Println(" getbalance -address ADDRESS - Get balance of ADDRESS") @@ -92,6 +101,7 @@ func (cli *CLI) Run() { getBalanceCmd := flag.NewFlagSet("getbalance", flag.ExitOnError) createBlockchainCmd := flag.NewFlagSet("createblockchain", flag.ExitOnError) createWalletCmd := flag.NewFlagSet("createwallet", flag.ExitOnError) + listAddressesCmd := flag.NewFlagSet("listaddresses", flag.ExitOnError) sendCmd := flag.NewFlagSet("send", flag.ExitOnError) printChainCmd := flag.NewFlagSet("printchain", flag.ExitOnError) @@ -117,6 +127,11 @@ func (cli *CLI) Run() { if err != nil { log.Panic(err) } + case "listaddresses": + err := listAddressesCmd.Parse(os.Args[2:]) + if err != nil { + log.Panic(err) + } case "printchain": err := printChainCmd.Parse(os.Args[2:]) if err != nil { @@ -152,6 +167,10 @@ func (cli *CLI) Run() { cli.createWallet() } + if listAddressesCmd.Parsed() { + cli.listAddresses() + } + if printChainCmd.Parsed() { cli.printChain() } diff --git a/wallet.go b/wallet.go index ace99fc..edadfbe 100644 --- a/wallet.go +++ b/wallet.go @@ -120,6 +120,17 @@ func (ws *Wallets) LoadFromFile() error { 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 ... func NewWallets() *Wallets { wallets := Wallets{}