//! Scope CLI command definitions.

use clap::Subcommand;

#[derive(Subcommand)]
pub enum ScopeCommands {
    /// Show current scope context
    ///
    /// Displays the configured scope hierarchy and inheritance chain.
    Status,

    /// Override an inherited pattern
    ///
    /// Creates an explicit override for a pattern inherited from a
    /// broader scope (organization or team). Requires justification.
    Override {
        /// Concept path to override (e.g., "tls/min_version")
        concept_path: String,

        /// New value for the override
        #[arg(short = 'V', long)]
        value: String,

        /// Reason for the override (required)
        #[arg(short, long)]
        reason: String,

        /// Evidence reference (ADR, ticket, spec)
        #[arg(short, long)]
        evidence: Option<String>,

        /// Expiration duration (e.g., "90d" for 90 days)
        #[arg(long)]
        expires: Option<String>,
    },

    /// List overrides at current scope
    ///
    /// Shows all pattern overrides defined at the current scope level.
    List {
        /// Include inherited overrides from broader scopes
        #[arg(long)]
        include_inherited: bool,

        /// Show expired overrides
        #[arg(long)]
        show_expired: bool,
    },

    /// Remove an override
    ///
    /// Deletes a scope override, allowing the inherited pattern
    /// to take effect again.
    Remove {
        /// Concept path of the override to remove
        concept_path: String,

        /// Force removal without confirmation
        #[arg(short, long)]
        force: bool,
    },
}
