use std::path::PathBuf;
use crate::OutputFormat;
use light_fw_cli_core::project::analyze_project;
#[derive(clap::Args)]
pub struct CheckArgs {
#[arg(default_value = ".")]
pub path: PathBuf,
#[arg(long, value_enum, default_value_t = OutputFormat::Text)]
pub format: OutputFormat,
#[arg(long)]
pub strict: bool,
}
pub fn run(args: CheckArgs) -> anyhow::Result<i32> {
let report = analyze_project(&args.path)?;
match args.format {
OutputFormat::Text => print!("{}", report.to_text()),
OutputFormat::Json => println!("{}", serde_json::to_string_pretty(&report.to_json())?),
}
let parse_failed = !report.scan.errors.is_empty();
let strict_failed = args.strict && report.has_problems();
if parse_failed || strict_failed {
return Ok(1);
}
Ok(0)
}