use clap::Args;
use super::parse_nonzero_usize;
use cqs::store::DeadConfidence;
#[derive(Args, Debug, Clone)]
pub(crate) struct GatherArgs {
pub query: String,
#[arg(long, default_value = "1")]
pub expand: usize,
#[arg(long, default_value = "both")]
pub direction: cqs::GatherDirection,
#[arg(short = 'n', long, default_value = "10")]
pub limit: usize,
#[arg(long, value_parser = parse_nonzero_usize)]
pub tokens: Option<usize>,
#[arg(long = "ref")]
pub ref_name: Option<String>,
}
#[derive(Args, Debug, Clone)]
pub(crate) struct ImpactArgs {
pub name: String,
#[arg(long, default_value = "1")]
pub depth: usize,
#[arg(long)]
pub suggest_tests: bool,
#[arg(long)]
pub type_impact: bool,
#[arg(long)]
pub cross_project: bool,
}
#[derive(Args, Debug, Clone)]
pub(crate) struct ScoutArgs {
pub query: String,
#[arg(short = 'n', long, default_value = "5")]
pub limit: usize,
#[arg(long, value_parser = parse_nonzero_usize)]
pub tokens: Option<usize>,
}
#[derive(Args, Debug, Clone)]
pub(crate) struct ContextArgs {
pub path: String,
#[arg(long)]
pub summary: bool,
#[arg(long)]
pub compact: bool,
#[arg(long, value_parser = parse_nonzero_usize)]
pub tokens: Option<usize>,
}
#[derive(Args, Debug, Clone)]
pub(crate) struct DeadArgs {
#[arg(long)]
pub include_pub: bool,
#[arg(long, default_value = "low")]
pub min_confidence: DeadConfidence,
}
#[derive(Args, Debug, Clone)]
pub(crate) struct SimilarArgs {
pub name: String,
#[arg(short = 'n', long, default_value = "5")]
pub limit: usize,
#[arg(short = 't', long, default_value = "0.3")]
pub threshold: f32,
}
#[derive(Args, Debug, Clone)]
pub(crate) struct BlameArgs {
pub name: String,
#[arg(short = 'd', long, default_value = "10")]
pub depth: usize,
#[arg(long)]
pub callers: bool,
}
#[derive(Args, Debug, Clone)]
pub(crate) struct TraceArgs {
pub source: String,
pub target: String,
#[arg(long, default_value = "10", value_parser = clap::value_parser!(u16).range(1..=50))]
pub max_depth: u16,
#[arg(long)]
pub cross_project: bool,
}
#[derive(Args, Debug, Clone)]
pub(crate) struct IndexArgs {
#[arg(long)]
pub force: bool,
#[arg(long)]
pub dry_run: bool,
#[arg(long)]
pub no_ignore: bool,
#[cfg(feature = "llm-summaries")]
#[arg(long)]
pub llm_summaries: bool,
#[cfg(feature = "llm-summaries")]
#[arg(long)]
pub improve_docs: bool,
#[cfg(feature = "llm-summaries")]
#[arg(long)]
pub improve_all: bool,
#[cfg(feature = "llm-summaries")]
#[arg(long)]
pub max_docs: Option<usize>,
#[cfg(feature = "llm-summaries")]
#[arg(long)]
pub hyde_queries: bool,
#[cfg(feature = "llm-summaries")]
#[arg(long)]
pub max_hyde: Option<usize>,
}