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)
}
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()
}

View File

@ -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{}