Skip to content

Commit bb5f202

Browse files
committed
cmd/geth: make it possible to autopilot removedb
1 parent cca9479 commit bb5f202

File tree

1 file changed

+32
-9
lines changed

1 file changed

+32
-9
lines changed

cmd/geth/dbcmd.go

Lines changed: 32 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -43,12 +43,23 @@ import (
4343
)
4444

4545
var (
46+
removeStateDataFlag = &cli.BoolFlag{
47+
Name: "remove.state",
48+
Usage: "If set, selects the state data for removal",
49+
}
50+
removeChainDataFlag = &cli.BoolFlag{
51+
Name: "remove.chain",
52+
Usage: "If set, selects the state data for removal",
53+
}
54+
4655
removedbCommand = &cli.Command{
47-
Action: removeDB,
48-
Name: "removedb",
49-
Usage: "Remove blockchain and state databases",
56+
Action: removeDB,
57+
Name: "removedb",
58+
Usage: "Remove blockchain and state databases. If arguments are provided, " +
59+
"they are interpreted as comma-separated answers to questions.",
5060
ArgsUsage: "",
51-
Flags: utils.DatabaseFlags,
61+
Flags: flags.Merge(utils.DatabaseFlags,
62+
[]cli.Flag{removeStateDataFlag, removeChainDataFlag}),
5263
Description: `
5364
Remove blockchain and state databases`,
5465
}
@@ -211,11 +222,11 @@ func removeDB(ctx *cli.Context) error {
211222
}
212223
// Delete state data
213224
statePaths := []string{rootDir, filepath.Join(ancientDir, rawdb.StateFreezerName)}
214-
confirmAndRemoveDB(statePaths, "state data")
225+
confirmAndRemoveDB(statePaths, "state data", ctx, removeStateDataFlag.Name)
215226

216227
// Delete ancient chain
217228
chainPaths := []string{filepath.Join(ancientDir, rawdb.ChainFreezerName)}
218-
confirmAndRemoveDB(chainPaths, "ancient chain")
229+
confirmAndRemoveDB(chainPaths, "ancient chain", ctx, removeChainDataFlag.Name)
219230
return nil
220231
}
221232

@@ -238,14 +249,26 @@ func removeFolder(dir string) {
238249

239250
// confirmAndRemoveDB prompts the user for a last confirmation and removes the
240251
// list of folders if accepted.
241-
func confirmAndRemoveDB(paths []string, kind string) {
252+
func confirmAndRemoveDB(paths []string, kind string, ctx *cli.Context, removeFlagName string) {
253+
var (
254+
confirm bool
255+
err error
256+
)
242257
msg := fmt.Sprintf("Location(s) of '%s': \n", kind)
243258
for _, path := range paths {
244259
msg += fmt.Sprintf("\t- %s\n", path)
245260
}
246261
fmt.Println(msg)
247-
248-
confirm, err := prompt.Stdin.PromptConfirm(fmt.Sprintf("Remove '%s'?", kind))
262+
if ctx.IsSet(removeFlagName) {
263+
confirm = ctx.Bool(removeFlagName)
264+
if confirm {
265+
fmt.Printf("Remove '%s'? [y/n] y\n", kind)
266+
} else {
267+
fmt.Printf("Remove '%s'? [y/n] n\n", kind)
268+
}
269+
} else {
270+
confirm, err = prompt.Stdin.PromptConfirm(fmt.Sprintf("Remove '%s'?", kind))
271+
}
249272
switch {
250273
case err != nil:
251274
utils.Fatalf("%v", err)

0 commit comments

Comments
 (0)