use std::process::ExitCode;
use crate::cli::CheckArgs;
use crate::engine::{build_report, fail, print_report, purge_run_logs, write_run_metadata};
const EXIT_PASS: u8 = 0;
const EXIT_BREAKING: u8 = 1;
pub fn run(args: &CheckArgs) -> ExitCode {
let output = match build_report(args) {
Ok(output) => output,
Err(message) => return fail(&message),
};
if let Err(message) = print_report(&output.report, &output.adapter, args) {
return fail(&message);
}
write_run_metadata(&output, args);
purge_run_logs(args, output.log_retention_days);
ExitCode::from(if output.report.is_breaking() {
EXIT_BREAKING
} else {
EXIT_PASS
})
}