@@ -17,10 +17,10 @@ pub enum CommandParseError {
17
17
18
18
macro_rules! generate_parser {
19
19
( pub enum $enum: ident {
20
- $( $command: expr => $variant: ident( $var_struct: ident {
20
+ $( $command: pat => $variant: ident( $var_struct: ident {
21
21
$( $flag: ident: $type: ty = $name: expr, ) *
22
22
} ) ) *
23
- _ => $d_variant: ident( $d_var_struct: ident { $( $d_flag: ident: $d_type: ty = $d_name: expr, ) * } )
23
+ => $d_variant: ident( $d_var_struct: ident { $( $d_flag: ident: $d_type: ty = $d_name: expr, ) * } )
24
24
} ) => {
25
25
use crate :: prelude:: * ;
26
26
use std:: str :: FromStr ;
@@ -128,7 +128,7 @@ generate_parser!(pub enum Command {
128
128
requirement: Option <String > = "requirement" ,
129
129
} )
130
130
131
- "abort" => Abort ( AbortArgs {
131
+ "abort" | "cancel" => Abort ( AbortArgs {
132
132
name: Option <String > = "name" ,
133
133
} )
134
134
@@ -144,7 +144,7 @@ generate_parser!(pub enum Command {
144
144
145
145
"reload-acl" => ReloadACL ( ReloadACLArgs { } )
146
146
147
- _ => Edit ( EditArgs {
147
+ => Edit ( EditArgs {
148
148
name: Option <String > = "name" ,
149
149
start: Option <Toolchain > = "start" ,
150
150
end: Option <Toolchain > = "end" ,
@@ -169,11 +169,11 @@ mod tests {
169
169
arg2: Option <String > = "arg2" ,
170
170
} )
171
171
172
- "bar" => Bar ( BarArgs {
172
+ "bar" | "bar-alias" => Bar ( BarArgs {
173
173
arg3: Option <String > = "arg3" ,
174
174
} )
175
175
176
- _ => Baz ( BazArgs {
176
+ => Baz ( BazArgs {
177
177
arg4: Option <i32 > = "arg4" ,
178
178
} )
179
179
} ) ;
@@ -201,6 +201,7 @@ mod tests {
201
201
} )
202
202
) ;
203
203
test ! ( "bar" , TestCommand :: Bar ( BarArgs { arg3: None } ) ) ;
204
+ test ! ( "bar-alias" , TestCommand :: Bar ( BarArgs { arg3: None } ) ) ;
204
205
test ! ( "" , TestCommand :: Baz ( BazArgs { arg4: None } ) ) ;
205
206
206
207
// Test if args are parsed correctly
@@ -230,6 +231,12 @@ mod tests {
230
231
arg3: Some ( "foo \" bar" . into( ) ) ,
231
232
} )
232
233
) ;
234
+ test ! (
235
+ "bar-alias arg3=\" foo \\ \" bar\" " ,
236
+ TestCommand :: Bar ( BarArgs {
237
+ arg3: Some ( "foo \" bar" . into( ) ) ,
238
+ } )
239
+ ) ;
233
240
test ! ( "arg4=42" , TestCommand :: Baz ( BazArgs { arg4: Some ( 42 ) } ) ) ;
234
241
235
242
// Test if invalid args are rejected
0 commit comments