@@ -50,9 +50,29 @@ impl<'cmd> Parser<'cmd> {
50
50
& mut self ,
51
51
matcher : & mut ArgMatcher ,
52
52
raw_args : & mut clap_lex:: RawArgs ,
53
- mut args_cursor : clap_lex:: ArgCursor ,
53
+ args_cursor : clap_lex:: ArgCursor ,
54
54
) -> ClapResult < ( ) > {
55
55
debug ! ( "Parser::get_matches_with" ) ;
56
+
57
+ ok ! ( self . parse( matcher, raw_args, args_cursor) ) ;
58
+ ok ! ( self . resolve_pending( matcher) ) ;
59
+
60
+ #[ cfg( feature = "env" ) ]
61
+ ok ! ( self . add_env( matcher) ) ;
62
+ ok ! ( self . add_defaults( matcher) ) ;
63
+
64
+ Validator :: new ( self . cmd ) . validate ( matcher)
65
+ }
66
+
67
+ // The actual parsing function
68
+ #[ allow( clippy:: cognitive_complexity) ]
69
+ pub ( crate ) fn parse (
70
+ & mut self ,
71
+ matcher : & mut ArgMatcher ,
72
+ raw_args : & mut clap_lex:: RawArgs ,
73
+ mut args_cursor : clap_lex:: ArgCursor ,
74
+ ) -> ClapResult < ( ) > {
75
+ debug ! ( "Parser::parse" ) ;
56
76
// Verify all positional assertions pass
57
77
58
78
let mut subcmd_name: Option < String > = None ;
@@ -436,11 +456,7 @@ impl<'cmd> Parser<'cmd> {
436
456
matches : sc_m. into_inner ( ) ,
437
457
} ) ;
438
458
439
- ok ! ( self . resolve_pending( matcher) ) ;
440
- #[ cfg( feature = "env" ) ]
441
- ok ! ( self . add_env( matcher) ) ;
442
- ok ! ( self . add_defaults( matcher) ) ;
443
- return Validator :: new ( self . cmd ) . validate ( matcher) ;
459
+ return Ok ( ( ) ) ;
444
460
} else {
445
461
// Start error processing
446
462
let _ = self . resolve_pending ( matcher) ;
@@ -474,11 +490,7 @@ impl<'cmd> Parser<'cmd> {
474
490
ok ! ( self . parse_subcommand( & sc_name, matcher, raw_args, args_cursor, keep_state) ) ;
475
491
}
476
492
477
- ok ! ( self . resolve_pending( matcher) ) ;
478
- #[ cfg( feature = "env" ) ]
479
- ok ! ( self . add_env( matcher) ) ;
480
- ok ! ( self . add_defaults( matcher) ) ;
481
- Validator :: new ( self . cmd ) . validate ( matcher)
493
+ Ok ( ( ) )
482
494
}
483
495
484
496
fn match_arg_error (
0 commit comments