|
|
|
@ -549,13 +549,22 @@ func exportchain(ctx *cli.Context) { |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
func removeDb(ctx *cli.Context) { |
|
|
|
|
fmt.Println("Removing chain and state databases...") |
|
|
|
|
start := time.Now() |
|
|
|
|
confirm, err := readConfirm("Remove local databases?") |
|
|
|
|
if err != nil { |
|
|
|
|
utils.Fatalf("%v", err) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
os.RemoveAll(filepath.Join(ctx.GlobalString(utils.DataDirFlag.Name), "blockchain")) |
|
|
|
|
os.RemoveAll(filepath.Join(ctx.GlobalString(utils.DataDirFlag.Name), "state")) |
|
|
|
|
if confirm { |
|
|
|
|
fmt.Println("Removing chain and state databases...") |
|
|
|
|
start := time.Now() |
|
|
|
|
|
|
|
|
|
fmt.Printf("Removed in %v\n", time.Since(start)) |
|
|
|
|
os.RemoveAll(filepath.Join(ctx.GlobalString(utils.DataDirFlag.Name), "blockchain")) |
|
|
|
|
os.RemoveAll(filepath.Join(ctx.GlobalString(utils.DataDirFlag.Name), "state")) |
|
|
|
|
|
|
|
|
|
fmt.Printf("Removed in %v\n", time.Since(start)) |
|
|
|
|
} else { |
|
|
|
|
fmt.Println("Operation aborted") |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
func upgradeDb(ctx *cli.Context) { |
|
|
|
@ -682,6 +691,32 @@ func hashish(x string) bool { |
|
|
|
|
return err != nil |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
func readConfirm(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 readPassword(prompt string, warnTerm bool) (string, error) { |
|
|
|
|
if liner.TerminalSupported() { |
|
|
|
|
lr := liner.NewLiner() |
|
|
|
|