use clap::Args;
use std::path::PathBuf;
#[derive(Args, Debug, Clone)]
pub struct LoggingArgs {
#[arg(long)]
pub log_file: Option<PathBuf>,
#[arg(long, default_value = "info")]
pub log_level: String,
}
#[derive(Args, Debug, Clone)]
pub struct CommonAnalyzeArgs {
#[command(flatten)]
pub logging: LoggingArgs,
#[arg(long)]
pub repo: PathBuf,
#[arg(long)]
pub from: String,
#[arg(long)]
pub to: String,
#[arg(short, long)]
pub output: Option<PathBuf>,
#[arg(long)]
pub no_llm: bool,
#[arg(long)]
pub llm_command: Option<String>,
#[arg(long, default_value = "5.0")]
pub max_llm_cost: f64,
#[arg(long)]
pub llm_all_files: bool,
}
#[derive(Args, Debug, Clone)]
pub struct CommonExtractArgs {
#[command(flatten)]
pub logging: LoggingArgs,
#[arg(long)]
pub repo: PathBuf,
#[arg(long, name = "ref")]
pub git_ref: String,
#[arg(short, long)]
pub output: Option<PathBuf>,
}
#[derive(Args, Debug, Clone)]
pub struct DiffArgs {
#[command(flatten)]
pub logging: LoggingArgs,
#[arg(long)]
pub from: PathBuf,
#[arg(long)]
pub to: PathBuf,
#[arg(short, long)]
pub output: Option<PathBuf>,
}
#[derive(Args, Debug, Clone)]
pub struct CommonKonveyorArgs {
#[command(flatten)]
pub logging: LoggingArgs,
#[arg(long, conflicts_with_all = ["repo", "from", "to"])]
pub from_report: Option<PathBuf>,
#[arg(long, required_unless_present = "from_report")]
pub repo: Option<PathBuf>,
#[arg(long, required_unless_present = "from_report")]
pub from: Option<String>,
#[arg(long, required_unless_present = "from_report")]
pub to: Option<String>,
#[arg(long)]
pub output_dir: PathBuf,
#[arg(long)]
pub no_llm: bool,
#[arg(long)]
pub llm_command: Option<String>,
#[arg(long, default_value = "5.0")]
pub max_llm_cost: f64,
#[arg(long)]
pub llm_all_files: bool,
#[arg(long)]
pub no_consolidate: bool,
#[arg(long)]
pub rename_patterns: Option<PathBuf>,
}