use std::path::PathBuf;
use clap::Parser;
use crate::explain::Format;
use crate::pulse::HeartbeatOpts;
#[derive(Parser, Debug)]
#[command(
name = "ct-check",
version,
about = "Verify the project's recorded invariants from .ct/rules.jsonc (read-only).",
long_about = "ct-check runs the rule store's probes in order and reports each rule as SUCCESS, \
ERROR, WARN, PENDING, or BROKEN (also reachable as `ct check`). It never writes \
anything; rules are recorded with ct-rules. See `ct-check --explain` for \
agent-oriented documentation."
)]
pub struct Cli {
#[arg(long)]
pub file: Option<PathBuf>,
#[arg(long)]
pub id: Option<String>,
#[arg(long, value_delimiter = ',')]
pub tag: Vec<String>,
#[arg(long)]
pub fail_fast: bool,
#[arg(long)]
pub list: bool,
#[arg(long)]
pub quiet: bool,
#[arg(long)]
pub json: bool,
#[arg(long, value_name = "TEMPLATE")]
pub emit_each: Option<String>,
#[arg(long, alias = "emit-stdout", value_name = "TEMPLATE")]
pub emit: Option<String>,
#[arg(long, value_name = "TEMPLATE")]
pub emit_stderr: Option<String>,
#[arg(long, value_name = "SECS")]
pub timeout: Option<f64>,
#[command(flatten)]
pub heartbeat: HeartbeatOpts,
#[arg(long, value_enum, num_args = 0..=1, default_missing_value = "md")]
pub explain: Option<Format>,
}