//! CLI definitions for the `aphoria verify` command.

use std::path::PathBuf;

use clap::Subcommand;

/// Verify commands for checking code against authored claims.
#[derive(Subcommand)]
pub enum VerifyCommands {
    /// Run verification: check observations against authored claims
    Run {
        /// Path to the project root
        #[arg(default_value = ".")]
        path: PathBuf,

        /// Output format: table or json
        #[arg(short, long, default_value = "table")]
        format: String,

        /// Exit with non-zero code on conflicts
        #[arg(long)]
        exit_code: bool,

        /// Only scan staged/changed files (for pre-commit hooks)
        #[arg(long)]
        changed_only: bool,

        /// Include UNCLAIMED observations in output
        #[arg(long)]
        show_unclaimed: bool,

        /// Filter to specific claim IDs (comma-separated)
        #[arg(long, value_delimiter = ',')]
        claim: Vec<String>,

        /// Filter by category
        #[arg(long)]
        category: Option<String>,
    },

    /// Show claim-to-extractor mapping
    Map {
        /// Path to the project root
        #[arg(default_value = ".")]
        path: PathBuf,
    },
}
