use std::path::PathBuf;
use clap::{Parser, Subcommand};
use super::OutputFormat;
#[derive(Parser, Clone)]
pub struct BaselineArgs {
#[command(subcommand)]
pub cmd: BaselineSub,
}
#[derive(Subcommand, Clone)]
pub enum BaselineSub {
Report(BaselineReportArgs),
Record(BaselineRecordArgs),
Check(BaselineCheckArgs),
}
#[derive(Parser, Clone)]
pub struct BaselineRecordArgs {
#[arg(long, default_value = "eval.yaml")]
pub config: PathBuf,
#[arg(long, default_value = ".eval/eval.db")]
pub db: PathBuf,
#[arg(long)]
pub suite: Option<String>,
#[arg(long)]
pub run_id: Option<String>,
#[arg(long, default_value = "assay-baseline.json")]
pub out: PathBuf,
}
#[derive(Parser, Clone)]
pub struct BaselineCheckArgs {
#[arg(long, default_value = "eval.yaml")]
pub config: PathBuf,
#[arg(long, default_value = ".eval/eval.db")]
pub db: PathBuf,
#[arg(long)]
pub suite: Option<String>,
#[arg(long)]
pub run_id: Option<String>,
#[arg(long, default_value = "assay-baseline.json")]
pub baseline: PathBuf,
#[arg(long, default_value_t = true)]
pub fail_on_regression: bool,
#[arg(long, value_enum, default_value_t = OutputFormat::Text)]
pub format: OutputFormat,
}
#[derive(Parser, Clone)]
pub struct BaselineReportArgs {
#[arg(long, default_value = ".eval/eval.db")]
pub db: PathBuf,
#[arg(long)]
pub suite: String,
#[arg(long, default_value_t = 50)]
pub last: u32,
#[arg(long, default_value = "hygiene.json")]
pub out: PathBuf,
#[arg(long, default_value = "json")]
pub format: String,
}