@@ -44,15 +44,16 @@ pub(crate) enum Command {
44
44
ProcMacro ,
45
45
RunServer ,
46
46
Version ,
47
+ Help ,
47
48
}
48
49
49
50
impl Args {
50
- pub ( crate ) fn parse ( ) -> Result < Result < Args , HelpPrinted > > {
51
+ pub ( crate ) fn parse ( ) -> Result < Args > {
51
52
let mut matches = Arguments :: from_env ( ) ;
52
53
53
54
if matches. contains ( "--version" ) {
54
55
matches. finish ( ) . or_else ( handle_extra_flags) ?;
55
- return Ok ( Ok ( Args { verbosity : Verbosity :: Normal , command : Command :: Version } ) ) ;
56
+ return Ok ( Args { verbosity : Verbosity :: Normal , command : Command :: Version } ) ;
56
57
}
57
58
58
59
let verbosity = match (
@@ -68,15 +69,16 @@ impl Args {
68
69
( false , true , true ) => bail ! ( "Invalid flags: -q conflicts with -v" ) ,
69
70
} ;
70
71
72
+ let help = Ok ( Args { verbosity, command : Command :: Help } ) ;
71
73
let subcommand = match matches. subcommand ( ) ? {
72
74
Some ( it) => it,
73
75
None => {
74
76
if matches. contains ( [ "-h" , "--help" ] ) {
75
77
print_subcommands ( ) ;
76
- return Ok ( Err ( HelpPrinted ) ) ;
78
+ return help ;
77
79
}
78
80
matches. finish ( ) . or_else ( handle_extra_flags) ?;
79
- return Ok ( Ok ( Args { verbosity, command : Command :: RunServer } ) ) ;
81
+ return Ok ( Args { verbosity, command : Command :: RunServer } ) ;
80
82
}
81
83
} ;
82
84
let command = match subcommand. as_str ( ) {
93
95
-h, --help Prints help information
94
96
--no-dump"
95
97
) ;
96
- return Ok ( Err ( HelpPrinted ) ) ;
98
+ return help ;
97
99
}
98
100
99
101
let no_dump = matches. contains ( "--no-dump" ) ;
@@ -112,7 +114,7 @@ USAGE:
112
114
FLAGS:
113
115
-h, --help Prints help inforamtion"
114
116
) ;
115
- return Ok ( Err ( HelpPrinted ) ) ;
117
+ return help ;
116
118
}
117
119
118
120
matches. finish ( ) . or_else ( handle_extra_flags) ?;
@@ -132,7 +134,7 @@ FLAGS:
132
134
-h, --help Prints help information
133
135
-r, --rainbow"
134
136
) ;
135
- return Ok ( Err ( HelpPrinted ) ) ;
137
+ return help ;
136
138
}
137
139
138
140
let rainbow = matches. contains ( [ "-r" , "--rainbow" ] ) ;
@@ -166,7 +168,7 @@ OPTIONS:
166
168
ARGS:
167
169
<PATH>"
168
170
) ;
169
- return Ok ( Err ( HelpPrinted ) ) ;
171
+ return help ;
170
172
}
171
173
172
174
let randomize = matches. contains ( "--randomize" ) ;
@@ -220,7 +222,7 @@ OPTIONS:
220
222
ARGS:
221
223
<PATH> Project to analyse"
222
224
) ;
223
- return Ok ( Err ( HelpPrinted ) ) ;
225
+ return help ;
224
226
}
225
227
226
228
let path: PathBuf = matches. opt_value_from_str ( "--project" ) ?. unwrap_or_default ( ) ;
@@ -266,7 +268,7 @@ FLAGS:
266
268
ARGS:
267
269
<PATH>"
268
270
) ;
269
- return Ok ( Err ( HelpPrinted ) ) ;
271
+ return help ;
270
272
}
271
273
272
274
let load_output_dirs = matches. contains ( "--load-output-dirs" ) ;
@@ -302,7 +304,7 @@ FLAGS:
302
304
ARGS:
303
305
<RULE> A structured search replace rule"
304
306
) ;
305
- return Ok ( Err ( HelpPrinted ) ) ;
307
+ return help ;
306
308
}
307
309
let mut rules = Vec :: new ( ) ;
308
310
while let Some ( rule) = matches. free_from_str ( ) ? {
@@ -329,7 +331,7 @@ FLAGS:
329
331
ARGS:
330
332
<PATTERN> A structured search pattern"
331
333
) ;
332
- return Ok ( Err ( HelpPrinted ) ) ;
334
+ return help ;
333
335
}
334
336
let debug_snippet = matches. opt_value_from_str ( "--debug" ) ?;
335
337
let mut patterns = Vec :: new ( ) ;
@@ -340,10 +342,10 @@ ARGS:
340
342
}
341
343
_ => {
342
344
print_subcommands ( ) ;
343
- return Ok ( Err ( HelpPrinted ) ) ;
345
+ return help ;
344
346
}
345
347
} ;
346
- Ok ( Ok ( Args { verbosity, command } ) )
348
+ Ok ( Args { verbosity, command } )
347
349
}
348
350
}
349
351
@@ -371,8 +373,6 @@ SUBCOMMANDS:
371
373
)
372
374
}
373
375
374
- pub ( crate ) struct HelpPrinted ;
375
-
376
376
fn handle_extra_flags ( e : pico_args:: Error ) -> Result < ( ) > {
377
377
if let pico_args:: Error :: UnusedArgsLeft ( flags) = e {
378
378
let mut invalid_flags = String :: new ( ) ;
0 commit comments