mago_cli/utils/
mod.rs

1use std::error::Error;
2
3pub mod clap;
4
5pub fn print(error: impl Error) {
6    mago_feedback::error!(target = "mago", "{}", error);
7    mago_feedback::debug!(target = "mago", "{:#?}", error);
8
9    if let Some(source) = error.source() {
10        mago_feedback::debug!(target = "mago", "{:#?}", source);
11    }
12}
13
14pub fn bail<T>(error: impl Error) -> T {
15    print(error);
16
17    // we exit with a non-zero status code to indicate an error
18    // if this build is debug build, we will panic instead
19    if cfg!(debug_assertions) {
20        panic!("bail");
21    } else {
22        std::process::exit(1);
23    }
24}