@@ -73,7 +73,7 @@ fn main() {
73
73
Ok ( cfg) => cfg,
74
74
Err ( e) => {
75
75
let mut shell = cargo:: shell ( Verbosity :: Verbose , ColorConfig :: Auto ) ;
76
- cargo:: handle_cli_error ( e. into ( ) , & mut shell)
76
+ cargo:: exit_with_error ( e. into ( ) , & mut shell)
77
77
}
78
78
} ;
79
79
@@ -88,7 +88,7 @@ fn main() {
88
88
} ) ( ) ;
89
89
90
90
match result {
91
- Err ( e) => cargo:: handle_cli_error ( e, & mut * config. shell ( ) ) ,
91
+ Err ( e) => cargo:: exit_with_error ( e, & mut * config. shell ( ) ) ,
92
92
Ok ( ( ) ) => { } ,
93
93
}
94
94
}
@@ -185,10 +185,7 @@ fn execute(flags: Flags, config: &Config) -> CliResult {
185
185
"" | "help" if flags. arg_args . is_empty ( ) => {
186
186
config. shell ( ) . set_verbosity ( Verbosity :: Verbose ) ;
187
187
let args = & [ "cargo" . to_string ( ) , "-h" . to_string ( ) ] ;
188
- let r = cargo:: call_main_without_stdin ( execute, config, USAGE , args,
189
- false ) ;
190
- cargo:: process_executed ( r, & mut config. shell ( ) ) ;
191
- return Ok ( ( ) )
188
+ return cargo:: call_main_without_stdin ( execute, config, USAGE , args, false ) ;
192
189
}
193
190
194
191
// For `cargo help -h` and `cargo help --help`, print out the help
@@ -219,8 +216,8 @@ fn execute(flags: Flags, config: &Config) -> CliResult {
219
216
}
220
217
} ;
221
218
222
- if try_execute ( & config, & args) {
223
- return Ok ( ( ) )
219
+ if let Some ( r ) = try_execute_builtin_command ( & config, & args) {
220
+ return r ;
224
221
}
225
222
226
223
let alias_list = aliased_command ( & config, & args[ 1 ] ) ?;
@@ -231,33 +228,32 @@ fn execute(flags: Flags, config: &Config) -> CliResult {
231
228
. chain ( args. iter ( ) . skip ( 2 ) )
232
229
. map ( |s| s. to_string ( ) )
233
230
. collect :: < Vec < _ > > ( ) ;
234
- if try_execute ( & config, & chain) {
235
- return Ok ( ( ) )
231
+ if let Some ( r ) = try_execute_builtin_command ( & config, & chain) {
232
+ return r ;
236
233
} else {
237
234
chain
238
235
}
239
236
}
240
237
None => args,
241
238
} ;
242
- execute_subcommand ( config , & args [ 1 ] , & args ) ? ;
243
- Ok ( ( ) )
239
+
240
+ execute_external_subcommand ( config , & args [ 1 ] , & args )
244
241
}
245
242
246
- fn try_execute ( config : & Config , args : & [ String ] ) -> bool {
243
+ fn try_execute_builtin_command ( config : & Config , args : & [ String ] ) -> Option < CliResult > {
247
244
macro_rules! cmd {
248
245
( $name: ident) => ( if args[ 1 ] == stringify!( $name) . replace( "_" , "-" ) {
249
246
config. shell( ) . set_verbosity( Verbosity :: Verbose ) ;
250
247
let r = cargo:: call_main_without_stdin( $name:: execute, config,
251
248
$name:: USAGE ,
252
249
& args,
253
250
false ) ;
254
- cargo:: process_executed( r, & mut config. shell( ) ) ;
255
- return true
251
+ return Some ( r) ;
256
252
} )
257
253
}
258
254
each_subcommand ! ( cmd) ;
259
255
260
- return false
256
+ None
261
257
}
262
258
263
259
fn aliased_command ( config : & Config , command : & String ) -> CargoResult < Option < Vec < String > > > {
@@ -295,9 +291,9 @@ fn find_closest(config: &Config, cmd: &str) -> Option<String> {
295
291
filtered. get ( 0 ) . map ( |slot| slot. 1 . clone ( ) )
296
292
}
297
293
298
- fn execute_subcommand ( config : & Config ,
299
- cmd : & str ,
300
- args : & [ String ] ) -> CliResult {
294
+ fn execute_external_subcommand ( config : & Config ,
295
+ cmd : & str ,
296
+ args : & [ String ] ) -> CliResult {
301
297
let command_exe = format ! ( "cargo-{}{}" , cmd, env:: consts:: EXE_SUFFIX ) ;
302
298
let path = search_directories ( config)
303
299
. iter ( )
0 commit comments