cmd/clef: list accounts at startup (#26082)

Reports accounts known to Clef during startup, after master seed is provided by the user.
This commit is contained in:
Joseph Cook
2022-11-07 16:41:36 +01:00
committed by GitHub
parent ca948b8579
commit 55a92fa0a4
2 changed files with 27 additions and 7 deletions
+25 -4
View File
@@ -18,6 +18,7 @@ package core
import (
"bufio"
"context"
"encoding/json"
"fmt"
"os"
@@ -31,8 +32,9 @@ import (
)
type CommandlineUI struct {
in *bufio.Reader
mu sync.Mutex
in *bufio.Reader
mu sync.Mutex
api *UIServerAPI
}
func NewCommandlineUI() *CommandlineUI {
@@ -40,7 +42,7 @@ func NewCommandlineUI() *CommandlineUI {
}
func (ui *CommandlineUI) RegisterUIServer(api *UIServerAPI) {
// noop
ui.api = api
}
// readString reads a single line from stdin, trimming if from spaces, enforcing
@@ -241,9 +243,28 @@ func (ui *CommandlineUI) OnApprovedTx(tx ethapi.SignTransactionResult) {
}
}
func (ui *CommandlineUI) showAccounts() {
accounts, err := ui.api.ListAccounts(context.Background())
if err != nil {
log.Error("Error listing accounts", "err", err)
return
}
if len(accounts) == 0 {
fmt.Print("No accounts found\n")
return
}
var out = new(strings.Builder)
fmt.Fprint(out, "\n------- Available accounts -------\n")
for i, account := range accounts {
fmt.Fprintf(out, "%d. %s at %s\n", i, account.Address, account.URL)
}
fmt.Print(out.String())
}
func (ui *CommandlineUI) OnSignerStartup(info StartupInfo) {
fmt.Printf("------- Signer info -------\n")
fmt.Print("\n------- Signer info -------\n")
for k, v := range info.Info {
fmt.Printf("* %v : %v\n", k, v)
}
go ui.showAccounts()
}