use clap::{Parser, Subcommand};
use kagi_api::v0::universal_summarizer::{Engine, Language, SummaryType};
use crate::render::OutputFormat;
#[derive(Parser, Debug, Clone)]
#[command(author, version, about, long_about = None)]
pub struct Args {
#[arg(short, long, default_value_t = false)]
pub compact: bool,
#[arg(short, long, default_value_t = OutputFormat::Markdown)]
pub format: OutputFormat,
#[arg(long, default_value_t = false)]
pub replay: bool,
#[arg(short, long, default_value_t = false)]
pub word_wrap: bool,
#[command(subcommand)]
pub command: KagiCommand,
}
#[derive(Subcommand, Debug, Clone)]
pub enum KagiCommand {
FastGpt {
query: String,
#[arg(short, long)]
cache: bool,
},
Summarize {
subject: String,
#[arg(short = 't', long = "type")]
summary_type: Option<SummaryType>,
#[arg(short, long)]
engine: Option<Engine>,
#[arg(short = 'l', long = "language")]
target_language: Option<Language>,
#[arg(short, long)]
cache: bool,
},
Completion { shell: clap_complete::Shell },
}