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:
parent
ca948b8579
commit
55a92fa0a4
@ -707,6 +707,7 @@ func signer(c *cli.Context) error {
|
|||||||
// it with the UI.
|
// it with the UI.
|
||||||
ui.RegisterUIServer(core.NewUIServerAPI(apiImpl))
|
ui.RegisterUIServer(core.NewUIServerAPI(apiImpl))
|
||||||
api = apiImpl
|
api = apiImpl
|
||||||
|
|
||||||
// Audit logging
|
// Audit logging
|
||||||
if logfile := c.String(auditLogFlag.Name); logfile != "" {
|
if logfile := c.String(auditLogFlag.Name); logfile != "" {
|
||||||
api, err = core.NewAuditLogger(logfile, api)
|
api, err = core.NewAuditLogger(logfile, api)
|
||||||
@ -768,7 +769,6 @@ func signer(c *cli.Context) error {
|
|||||||
log.Info("IPC endpoint closed", "url", ipcapiURL)
|
log.Info("IPC endpoint closed", "url", ipcapiURL)
|
||||||
}()
|
}()
|
||||||
}
|
}
|
||||||
|
|
||||||
if c.Bool(testFlag.Name) {
|
if c.Bool(testFlag.Name) {
|
||||||
log.Info("Performing UI test")
|
log.Info("Performing UI test")
|
||||||
go testExternalUI(apiImpl)
|
go testExternalUI(apiImpl)
|
||||||
@ -779,8 +779,7 @@ func signer(c *cli.Context) error {
|
|||||||
"extapi_version": core.ExternalAPIVersion,
|
"extapi_version": core.ExternalAPIVersion,
|
||||||
"extapi_http": extapiURL,
|
"extapi_http": extapiURL,
|
||||||
"extapi_ipc": ipcapiURL,
|
"extapi_ipc": ipcapiURL,
|
||||||
},
|
}})
|
||||||
})
|
|
||||||
|
|
||||||
abortChan := make(chan os.Signal, 1)
|
abortChan := make(chan os.Signal, 1)
|
||||||
signal.Notify(abortChan, os.Interrupt)
|
signal.Notify(abortChan, os.Interrupt)
|
||||||
|
@ -18,6 +18,7 @@ package core
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"bufio"
|
"bufio"
|
||||||
|
"context"
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
"fmt"
|
"fmt"
|
||||||
"os"
|
"os"
|
||||||
@ -33,6 +34,7 @@ import (
|
|||||||
type CommandlineUI struct {
|
type CommandlineUI struct {
|
||||||
in *bufio.Reader
|
in *bufio.Reader
|
||||||
mu sync.Mutex
|
mu sync.Mutex
|
||||||
|
api *UIServerAPI
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewCommandlineUI() *CommandlineUI {
|
func NewCommandlineUI() *CommandlineUI {
|
||||||
@ -40,7 +42,7 @@ func NewCommandlineUI() *CommandlineUI {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (ui *CommandlineUI) RegisterUIServer(api *UIServerAPI) {
|
func (ui *CommandlineUI) RegisterUIServer(api *UIServerAPI) {
|
||||||
// noop
|
ui.api = api
|
||||||
}
|
}
|
||||||
|
|
||||||
// readString reads a single line from stdin, trimming if from spaces, enforcing
|
// 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) {
|
func (ui *CommandlineUI) OnSignerStartup(info StartupInfo) {
|
||||||
fmt.Printf("------- Signer info -------\n")
|
fmt.Print("\n------- Signer info -------\n")
|
||||||
for k, v := range info.Info {
|
for k, v := range info.Info {
|
||||||
fmt.Printf("* %v : %v\n", k, v)
|
fmt.Printf("* %v : %v\n", k, v)
|
||||||
}
|
}
|
||||||
|
go ui.showAccounts()
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user