use std::io::Write as _;
use degenbot_cli_core::{CliError, CommandOutcome, ExitCode};
#[must_use]
pub fn outcome(outcome: &CommandOutcome) -> i32 {
let mut stdout = std::io::stdout().lock();
if let Some(report) = outcome.report() {
for line in report.render_lines() {
let _ = writeln!(stdout, "{line}");
}
}
let _ = stdout.flush();
if let Some(error) = outcome.error() {
write_error(error);
}
outcome.exit_code.code()
}
#[must_use]
pub fn error(error: &CliError) -> i32 {
write_error(error);
ExitCode::from(error).code()
}
fn write_error(error: &CliError) {
let mut stderr = std::io::stderr().lock();
match error {
CliError::BootRefused(message) => {
let _ = writeln!(stderr, "REFUSED — {message}");
}
other => {
let _ = writeln!(stderr, "{}", other.message());
}
}
}