diff options
author | Jeffrey Wilcke <jeffrey@ethereum.org> | 2015-05-19 02:12:58 +0800 |
---|---|---|
committer | Jeffrey Wilcke <jeffrey@ethereum.org> | 2015-05-19 02:12:58 +0800 |
commit | d6adadc5e37f3d01cac25b5371e1c42b7036735a (patch) | |
tree | 4ab0d866e97322ffd838110fbfb9656733eb8e6a /cmd/utils | |
parent | a3a5f8b59342363613f46af3413a2e5a8c124da8 (diff) | |
parent | 0864f1fc8e281bdfd87daaa24881f9f96d6bd10c (diff) | |
download | dexon-d6adadc5e37f3d01cac25b5371e1c42b7036735a.tar dexon-d6adadc5e37f3d01cac25b5371e1c42b7036735a.tar.gz dexon-d6adadc5e37f3d01cac25b5371e1c42b7036735a.tar.bz2 dexon-d6adadc5e37f3d01cac25b5371e1c42b7036735a.tar.lz dexon-d6adadc5e37f3d01cac25b5371e1c42b7036735a.tar.xz dexon-d6adadc5e37f3d01cac25b5371e1c42b7036735a.tar.zst dexon-d6adadc5e37f3d01cac25b5371e1c42b7036735a.zip |
Merge pull request #1033 from tgerring/issue1010
Add "removedb" command to Geth
Diffstat (limited to 'cmd/utils')
-rw-r--r-- | cmd/utils/cmd.go | 52 |
1 files changed, 41 insertions, 11 deletions
diff --git a/cmd/utils/cmd.go b/cmd/utils/cmd.go index fb55a64af..39b4e46da 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){} @@ -71,18 +74,45 @@ func openLogFile(Datadir string, filename string) *os.File { return file } -func confirm(message string) bool { - fmt.Println(message, "Are you sure? (y/n)") - var r string - fmt.Scanln(&r) - for ; ; fmt.Scanln(&r) { - if r == "n" || r == "y" { - break - } else { - fmt.Printf("Yes or no? (%s)", r) - } +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.") } - return r == "y" + fmt.Print(prompt) + input, err := bufio.NewReader(os.Stdin).ReadString('\n') + fmt.Println() + return input, err } func initDataDir(Datadir string) { |