//! Model management command arguments

use clap::Subcommand;

/// AI model management operations
#[derive(Subcommand, Debug)]
pub enum ModelsCommand {
    /// List all models in the catalog
    List {
        /// Show detailed information
        #[arg(short, long)]
        verbose: bool,

        /// Show only recommended models
        #[arg(short, long)]
        recommended: bool,
    },

    /// Download a model from the catalog
    Pull {
        /// Model name from catalog (e.g., "yolov8n")
        name: Option<String>,

        /// Download all recommended models
        #[arg(long)]
        all: bool,

        /// Custom HuggingFace repository (e.g., "Xenova/yolov8n")
        #[arg(long, requires = "file")]
        repo: Option<String>,

        /// File name within the repo (e.g., "onnx/model.onnx")
        #[arg(long, requires = "repo")]
        file: Option<String>,

        /// Custom model name for saving (required with --repo)
        #[arg(long, requires = "repo")]
        custom_name: Option<String>,
    },

    /// List installed models
    Installed {
        /// Show detailed information including paths
        #[arg(short, long)]
        verbose: bool,
    },

    /// Remove an installed model
    Remove {
        /// Model name to remove
        name: String,

        /// Skip confirmation prompt
        #[arg(short = 'y', long)]
        yes: bool,
    },

    /// Show information about a model
    Info {
        /// Model name
        name: String,
    },
}
