#![cfg_attr(coverage_nightly, coverage(off))]
use clap::Parser;
use super::commands_enum::Commands;
#[derive(Parser)]
#[command(
name = "pmat",
about = "PMAT - Professional Multi-language Analysis Toolkit for code quality, complexity, and technical debt",
version,
long_about = None,
after_help = "EXAMPLES:
# Analyze code complexity
pmat analyze complexity --path .
# Calculate Technical Debt Grade (TDG)
pmat tdg .
# Find self-admitted technical debt markers
pmat analyze satd --path .
# Find dead code
pmat analyze dead-code --path .
# Generate AI-ready project context
pmat context --format llm-optimized
# Run quality gates
pmat quality-gate
# Calculate repository health score
pmat repo-score
# Start background agent daemon
pmat agent start"
)]
#[cfg_attr(test, derive(Debug))]
pub struct Cli {
#[arg(long, value_enum, global = true)]
pub mode: Option<Mode>,
#[arg(short, long, global = true)]
pub verbose: bool,
#[arg(short, long, global = true, conflicts_with = "verbose")]
pub quiet: bool,
#[arg(long, global = true)]
pub debug: bool,
#[arg(long, global = true)]
pub trace: bool,
#[arg(long, global = true, env = "RUST_LOG")]
pub trace_filter: Option<String>,
#[arg(long, global = true, value_enum, default_value = "auto")]
pub color: ColorMode,
#[command(subcommand)]
pub command: Commands,
}
#[derive(Clone, Debug, clap::ValueEnum, PartialEq)]
pub enum Mode {
Cli,
Mcp,
}
#[derive(Clone, Debug, clap::ValueEnum, PartialEq, Default)]
pub enum ColorMode {
#[default]
Auto,
Always,
Never,
}