aboutsummaryrefslogtreecommitdiffstats
path: root/cmd/utils
diff options
context:
space:
mode:
authorJeffrey Wilcke <jeffrey@ethereum.org>2015-05-19 02:12:58 +0800
committerJeffrey Wilcke <jeffrey@ethereum.org>2015-05-19 02:12:58 +0800
commitd6adadc5e37f3d01cac25b5371e1c42b7036735a (patch)
tree4ab0d866e97322ffd838110fbfb9656733eb8e6a /cmd/utils
parenta3a5f8b59342363613f46af3413a2e5a8c124da8 (diff)
parent0864f1fc8e281bdfd87daaa24881f9f96d6bd10c (diff)
downloaddexon-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.go52
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) {