use std::process::ExitCode;
use clap::{Args, Subcommand};
use crate::config::ResolvedContext;
use crate::output::OutputFormat;
pub mod compliance;
pub mod export;
pub mod list;
pub mod models;
pub mod verify_chain;
#[derive(Debug, Args)]
pub struct AuditArgs {
#[command(subcommand)]
pub command: AuditCommands,
}
#[derive(Debug, Subcommand)]
pub enum AuditCommands {
List(list::ListArgs),
Export(export::ExportArgs),
VerifyChain(verify_chain::VerifyChainArgs),
ComplianceExport(compliance::ComplianceExportArgs),
}
pub fn dispatch(args: AuditArgs, ctx: &ResolvedContext, output: OutputFormat) -> ExitCode {
match args.command {
AuditCommands::List(list_args) => list::run(list_args, ctx, output),
AuditCommands::Export(export_args) => export::run(export_args, ctx),
AuditCommands::VerifyChain(vca) => verify_chain::run(vca),
AuditCommands::ComplianceExport(cea) => compliance::run(cea),
}
}