@@ -43,12 +43,23 @@ import (
43
43
)
44
44
45
45
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
+
46
55
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." ,
50
60
ArgsUsage : "" ,
51
- Flags : utils .DatabaseFlags ,
61
+ Flags : flags .Merge (utils .DatabaseFlags ,
62
+ []cli.Flag {removeStateDataFlag , removeChainDataFlag }),
52
63
Description : `
53
64
Remove blockchain and state databases` ,
54
65
}
@@ -211,11 +222,11 @@ func removeDB(ctx *cli.Context) error {
211
222
}
212
223
// Delete state data
213
224
statePaths := []string {rootDir , filepath .Join (ancientDir , rawdb .StateFreezerName )}
214
- confirmAndRemoveDB (statePaths , "state data" )
225
+ confirmAndRemoveDB (statePaths , "state data" , ctx , removeStateDataFlag . Name )
215
226
216
227
// Delete ancient chain
217
228
chainPaths := []string {filepath .Join (ancientDir , rawdb .ChainFreezerName )}
218
- confirmAndRemoveDB (chainPaths , "ancient chain" )
229
+ confirmAndRemoveDB (chainPaths , "ancient chain" , ctx , removeChainDataFlag . Name )
219
230
return nil
220
231
}
221
232
@@ -238,14 +249,26 @@ func removeFolder(dir string) {
238
249
239
250
// confirmAndRemoveDB prompts the user for a last confirmation and removes the
240
251
// 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
+ )
242
257
msg := fmt .Sprintf ("Location(s) of '%s': \n " , kind )
243
258
for _ , path := range paths {
244
259
msg += fmt .Sprintf ("\t - %s\n " , path )
245
260
}
246
261
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
+ }
249
272
switch {
250
273
case err != nil :
251
274
utils .Fatalf ("%v" , err )
0 commit comments