diff options
author | Taylor Gerring <taylor.gerring@gmail.com> | 2015-05-19 01:24:30 +0800 |
---|---|---|
committer | Taylor Gerring <taylor.gerring@gmail.com> | 2015-05-19 01:24:30 +0800 |
commit | f14feea43683fee58e26a48a51145e72d3ae7ad8 (patch) | |
tree | 6f02793925e5917780a63024490dbc6f5a641f72 /cmd/utils/cmd.go | |
parent | 36a4ba32485fb6605ea23f03896ae8d7c4cc44ae (diff) | |
download | go-tangerine-f14feea43683fee58e26a48a51145e72d3ae7ad8.tar.gz go-tangerine-f14feea43683fee58e26a48a51145e72d3ae7ad8.tar.zst go-tangerine-f14feea43683fee58e26a48a51145e72d3ae7ad8.zip |
Refactor user prompts into utils
Diffstat (limited to 'cmd/utils/cmd.go')
-rw-r--r-- | cmd/utils/cmd.go | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/cmd/utils/cmd.go b/cmd/utils/cmd.go index fb55a64af..62d350066 100644 --- a/cmd/utils/cmd.go +++ b/cmd/utils/cmd.go @@ -22,11 +22,13 @@ package utils import ( + "bufio" "fmt" "io" "os" "os/signal" "regexp" + "strings" "github.com/ethereum/go-ethereum/common" "github.com/ethereum/go-ethereum/core" @@ -35,6 +37,7 @@ import ( "github.com/ethereum/go-ethereum/logger" "github.com/ethereum/go-ethereum/logger/glog" "github.com/ethereum/go-ethereum/rlp" + "github.com/peterh/liner" ) var interruptCallbacks = []func(os.Signal){} @@ -85,6 +88,47 @@ func confirm(message string) bool { return r == "y" } +func PromptConfirm(prompt string) (bool, error) { + var ( + input string + err error + ) + prompt = prompt + " [y/N] " + + if liner.TerminalSupported() { + lr := liner.NewLiner() + defer lr.Close() + input, err = lr.Prompt(prompt) + } else { + fmt.Print(prompt) + input, err = bufio.NewReader(os.Stdin).ReadString('\n') + fmt.Println() + } + + if len(input) > 0 && strings.ToUpper(input[:1]) == "Y" { + return true, nil + } else { + return false, nil + } + + return false, err +} + +func PromptPassword(prompt string, warnTerm bool) (string, error) { + if liner.TerminalSupported() { + lr := liner.NewLiner() + defer lr.Close() + return lr.PasswordPrompt(prompt) + } + if warnTerm { + fmt.Println("!! Unsupported terminal, password will be echoed.") + } + fmt.Print(prompt) + input, err := bufio.NewReader(os.Stdin).ReadString('\n') + fmt.Println() + return input, err +} + func initDataDir(Datadir string) { _, err := os.Stat(Datadir) if err != nil { |