Skip to content

Commit

Permalink
Merge pull request #4967 from hartwork/error-exit-code
Browse files Browse the repository at this point in the history
Extract/add public method `Error.exit_code`
  • Loading branch information
epage authored Jun 14, 2023
2 parents 1db9df4 + 3632989 commit a3f482f
Showing 1 changed file with 13 additions and 8 deletions.
21 changes: 13 additions & 8 deletions clap_builder/src/error/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -214,21 +214,26 @@ impl<F: ErrorFormatter> Error<F> {
}
}

/// Returns the exit code that `.exit` will exit the process with.
///
/// When the error's kind would print to `stderr` this returns `2`,
/// else it returns `0`.
pub fn exit_code(&self) -> i32 {
if self.use_stderr() {
USAGE_CODE
} else {
SUCCESS_CODE
}
}

/// Prints the error and exits.
///
/// Depending on the error kind, this either prints to `stderr` and exits with a status of `2`
/// or prints to `stdout` and exits with a status of `0`.
pub fn exit(&self) -> ! {
if self.use_stderr() {
// Swallow broken pipe errors
let _ = self.print();

safe_exit(USAGE_CODE);
}

// Swallow broken pipe errors
let _ = self.print();
safe_exit(SUCCESS_CODE)
safe_exit(self.exit_code())
}

/// Prints formatted and colored error to `stdout` or `stderr` according to its error kind
Expand Down

0 comments on commit a3f482f

Please sign in to comment.