use clap::{Parser, Subcommand, ValueEnum};
use std::path::PathBuf;
#[derive(Parser)]
#[command(
name = "aic",
version,
about = "Detect AI-generated content via provenance signals"
)]
pub struct Cli {
#[command(subcommand)]
pub command: Command,
#[arg(long, global = true)]
pub json: bool,
#[arg(short, long, global = true)]
pub quiet: bool,
#[arg(long, global = true)]
pub no_color: bool,
#[arg(long, global = true)]
pub lang: Option<String>,
}
#[derive(Subcommand)]
pub enum Command {
Check(CheckArgs),
Info(InfoArgs),
}
#[derive(clap::Args)]
pub struct CheckArgs {
#[arg(required = true)]
pub paths: Vec<PathBuf>,
#[arg(short = 'r', long)]
pub recursive: bool,
#[arg(long, value_enum, default_value = "low")]
pub min_confidence: ConfidenceFilter,
#[arg(long)]
pub deep: bool,
}
#[derive(clap::Args)]
pub struct InfoArgs {
pub file: PathBuf,
}
#[derive(Clone, ValueEnum)]
pub enum ConfidenceFilter {
Low,
Medium,
High,
}
impl ConfidenceFilter {
pub fn to_confidence(&self) -> aicheck::detector::Confidence {
match self {
ConfidenceFilter::Low => aicheck::detector::Confidence::Low,
ConfidenceFilter::Medium => aicheck::detector::Confidence::Medium,
ConfidenceFilter::High => aicheck::detector::Confidence::High,
}
}
}