@@ -45,7 +45,10 @@ pub fn cli_app() -> Command {
45
45
Arg :: new ( VALIDATOR_FLAG )
46
46
. long ( VALIDATOR_FLAG )
47
47
. value_name ( "STRING" )
48
- . help ( "Comma-separated list of validators (pubkey) that will be deleted." )
48
+ . help (
49
+ "Comma-separated list of validators (pubkey) that will be deleted. \
50
+ To delete all validators, use the keyword \" all\" .",
51
+ )
49
52
. action ( ArgAction :: Set )
50
53
. required ( true )
51
54
. display_order ( 0 ) ,
@@ -64,10 +67,14 @@ impl DeleteConfig {
64
67
let validators_to_delete_str =
65
68
clap_utils:: parse_required :: < String > ( matches, VALIDATOR_FLAG ) ?;
66
69
67
- let validators_to_delete = validators_to_delete_str
68
- . split ( ',' )
69
- . map ( |s| s. trim ( ) . parse ( ) )
70
- . collect :: < Result < Vec < PublicKeyBytes > , _ > > ( ) ?;
70
+ let validators_to_delete = if validators_to_delete_str. trim ( ) == "all" {
71
+ Vec :: new ( )
72
+ } else {
73
+ validators_to_delete_str
74
+ . split ( ',' )
75
+ . map ( |s| s. trim ( ) . parse ( ) )
76
+ . collect :: < Result < Vec < PublicKeyBytes > , _ > > ( ) ?
77
+ } ;
71
78
72
79
Ok ( Self {
73
80
vc_token_path : clap_utils:: parse_required ( matches, VC_TOKEN_FLAG ) ?,
@@ -90,11 +97,16 @@ async fn run<'a>(config: DeleteConfig) -> Result<(), String> {
90
97
let DeleteConfig {
91
98
vc_url,
92
99
vc_token_path,
93
- validators_to_delete,
100
+ mut validators_to_delete,
94
101
} = config;
95
102
96
103
let ( http_client, validators) = vc_http_client ( vc_url. clone ( ) , & vc_token_path) . await ?;
97
104
105
+ // Delete all validators on the VC
106
+ if validators_to_delete. is_empty ( ) {
107
+ validators_to_delete = validators. iter ( ) . map ( |v| v. validating_pubkey ) . collect ( ) ;
108
+ }
109
+
98
110
for validator_to_delete in & validators_to_delete {
99
111
if !validators
100
112
. iter ( )
0 commit comments