use crate::cli::VerifyArgs;
use crate::output::OutputFormatter;
use anyhow::Result;
use anyhow::bail;
use exarch_core::SecurityConfig;
use exarch_core::VerificationStatus;
use exarch_core::verify_archive;
pub fn execute(args: &VerifyArgs, formatter: &dyn OutputFormatter) -> Result<()> {
let config = SecurityConfig {
max_file_count: args.max_files,
max_total_size: args
.max_total_size
.unwrap_or_else(|| SecurityConfig::default().max_total_size),
allow_solid_archives: args.allow_solid_archives,
..Default::default()
};
let report = verify_archive(&args.archive, &config)?;
formatter.format_verification_report(&report)?;
match report.status {
VerificationStatus::Pass => Ok(()),
VerificationStatus::Warning => {
Ok(())
}
VerificationStatus::Fail => {
bail!("Archive verification failed")
}
}
}