//! Arguments for `mcptest validate`.

use clap::{Args, ValueEnum};

/// Arguments for `mcptest validate`.
///
/// The path to validate is taken from the global `--config` flag so behavior
/// is consistent with `run`; this struct only selects the rendering.
#[derive(Debug, Args, Default)]
pub struct ValidateArgs {
    /// Output format. Default `human`; `json` emits the structured
    /// `{ valid, errors }` document the `validate_suite` MCP verb consumes.
    #[arg(
        long,
        value_enum,
        value_name = "FORMAT",
        default_value_t = ValidateFormatCli::Human
    )]
    pub format: ValidateFormatCli,
}

/// Output formats accepted by `mcptest validate`.
///
/// Two renderings of the same findings: annotated lines for a person at a
/// terminal, and one machine-readable JSON document for the `validate_suite`
/// MCP verb (and any other tool) to parse.
#[derive(Copy, Clone, Debug, Default, PartialEq, Eq, ValueEnum)]
#[value(rename_all = "kebab-case")]
pub enum ValidateFormatCli {
    /// Annotated finding lines (default).
    #[default]
    Human,
    /// One pretty-printed `{ valid, errors }` JSON document.
    Json,
}
