Add user confirmation for removedb
This commit is contained in:
		| @@ -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() | ||||
|   | ||||
		Reference in New Issue
	
	Block a user