From 87dc93513b4a8ef5731646b8f580e2b7030b8013 Mon Sep 17 00:00:00 2001 From: alexion Date: Sat, 19 Sep 2026 16:58:27 -0400 Subject: [PATCH] feat(xatu): set CLI exit statuses --- src/xatu/xatu_main.rs | 29 +++++++++++++++++++++-------- 1 file changed, 21 insertions(+), 8 deletions(-) diff --git a/src/xatu/xatu_main.rs b/src/xatu/xatu_main.rs index 5c50fe8..7e43fac 100644 --- a/src/xatu/xatu_main.rs +++ b/src/xatu/xatu_main.rs @@ -1,7 +1,8 @@ use clap::Parser; use status::ResultExt; use std::path::{Path, PathBuf}; -use xatu::SourceFile; +use std::process::ExitCode; +use xatu::{Report, SourceFile}; fn is_nix_file(path: &Path) -> bool { path.extension().is_some_and(|extension| extension == "nix") @@ -66,9 +67,7 @@ struct Args { paths: Vec, } -fn main() -> status::Result<()> { - let args = Args::parse(); - +fn analyze(args: Args) -> status::Result { let paths: Vec = args .paths .into_iter() @@ -83,8 +82,22 @@ fn main() -> status::Result<()> { .flatten() .collect(); - let report = xatu::future_sight(files)?; - print!("{report}"); - - Ok(()) + xatu::future_sight(files) +} + +fn main() -> ExitCode { + match analyze(Args::parse()) { + Ok(report) if report.is_clean() => { + println!("No findings."); + ExitCode::SUCCESS + } + Ok(report) => { + print!("{report}"); + ExitCode::from(1) + } + Err(error) => { + eprintln!("{error}"); + ExitCode::from(2) + } + } }