use clap::{Args as ClapArgs, Parser, Subcommand};
use std::path::PathBuf;
#[derive(Debug, Parser)]
#[command(version, about)]
pub struct Cli {
#[command(subcommand)]
pub command: Command,
}
#[derive(Debug, Subcommand)]
pub enum Command {
Check(Box<Args>),
#[command(
about = "Record a stable task-start base for constrained cloud-agent worktrees",
long_about = r#"Record a stable task-start base for constrained cloud-agent worktrees.
Use this when a cloud agent or sandboxed worktree cannot rely on normal base
branches such as main or origin/main. Run it once at the start of a task before
making Git changes, then run `covgate check <coverage-report>` without
`--base`."#
)]
RecordBase,
}
#[derive(Debug, ClapArgs)]
pub struct Args {
pub coverage_report: PathBuf,
#[arg(long, conflicts_with = "diff_file")]
pub base: Option<String>,
#[arg(long, conflicts_with = "base")]
pub diff_file: Option<PathBuf>,
#[arg(long, value_name = "MIN")]
pub fail_under_regions: Option<f64>,
#[arg(long, value_name = "MIN")]
pub fail_under_lines: Option<f64>,
#[arg(long, value_name = "MIN")]
pub fail_under_branches: Option<f64>,
#[arg(long, value_name = "MIN")]
pub fail_under_functions: Option<f64>,
#[arg(long, value_name = "MIN")]
pub fail_under_named_functions: Option<f64>,
#[arg(long, value_name = "MAX")]
pub fail_uncovered_regions: Option<usize>,
#[arg(long, value_name = "MAX")]
pub fail_uncovered_lines: Option<usize>,
#[arg(long, value_name = "MAX")]
pub fail_uncovered_branches: Option<usize>,
#[arg(long, value_name = "MAX")]
pub fail_uncovered_functions: Option<usize>,
#[arg(long, value_name = "MAX")]
pub fail_uncovered_named_functions: Option<usize>,
#[arg(long)]
pub markdown_output: Option<PathBuf>,
#[arg(long)]
pub verbose: bool,
}