370 use_detailed_exit_code: bool, |
370 use_detailed_exit_code: bool, |
371 ) -> i32 { |
371 ) -> i32 { |
372 match result { |
372 match result { |
373 Ok(()) => exit_codes::OK, |
373 Ok(()) => exit_codes::OK, |
374 Err(CommandError::Abort { |
374 Err(CommandError::Abort { |
375 message: _, |
375 detailed_exit_code, .. |
376 detailed_exit_code, |
|
377 }) => { |
376 }) => { |
378 if use_detailed_exit_code { |
377 if use_detailed_exit_code { |
379 *detailed_exit_code |
378 *detailed_exit_code |
380 } else { |
379 } else { |
381 exit_codes::ABORT |
380 exit_codes::ABORT |
478 use_detailed_exit_code: bool, |
477 use_detailed_exit_code: bool, |
479 ) -> ! { |
478 ) -> ! { |
480 match &result { |
479 match &result { |
481 Ok(_) => {} |
480 Ok(_) => {} |
482 Err(CommandError::Unsuccessful) => {} |
481 Err(CommandError::Unsuccessful) => {} |
483 Err(CommandError::Abort { |
482 Err(CommandError::Abort { message, hint, .. }) => { |
484 message, |
483 // Ignore errors when writing to stderr, we’re already exiting |
485 detailed_exit_code: _, |
484 // with failure code so there’s not much more we can do. |
486 }) => { |
|
487 if !message.is_empty() { |
485 if !message.is_empty() { |
488 // Ignore errors when writing to stderr, we’re already exiting |
|
489 // with failure code so there’s not much more we can do. |
|
490 let _ = ui.write_stderr(&format_bytes!(b"{}\n", message)); |
486 let _ = ui.write_stderr(&format_bytes!(b"{}\n", message)); |
|
487 } |
|
488 if let Some(hint) = hint { |
|
489 let _ = ui.write_stderr(&format_bytes!(b"({})\n", hint)); |
491 } |
490 } |
492 } |
491 } |
493 Err(CommandError::UnsupportedFeature { message }) => { |
492 Err(CommandError::UnsupportedFeature { message }) => { |
494 match on_unsupported { |
493 match on_unsupported { |
495 OnUnsupported::Abort => { |
494 OnUnsupported::Abort => { |