use std::path::PathBuf;
use clap::{Parser, Subcommand};
use super::colors::{ColorMode, ThemeMode};
#[derive(Parser, Debug)]
#[command(name = "oas3-gen")]
#[command(author, version, about = "OpenAPI to Rust code generator")]
pub struct Cli {
#[command(subcommand)]
pub command: Commands,
#[arg(long, value_enum, default_value = "auto", global = true)]
pub color: ColorMode,
#[arg(long, value_enum, default_value = "auto", global = true)]
pub theme: ThemeMode,
}
#[derive(Subcommand, Debug)]
pub enum Commands {
List {
#[command(subcommand)]
list_command: ListCommands,
},
Generate {
#[arg(short, long, value_name = "FILE")]
input: PathBuf,
#[arg(short, long, value_name = "FILE")]
output: PathBuf,
#[arg(long, value_name = "VISIBILITY", default_value = "public")]
visibility: String,
#[arg(short, long, default_value_t = false)]
verbose: bool,
#[arg(short, long, default_value_t = false)]
quiet: bool,
#[arg(long, default_value_t = false)]
all_schemas: bool,
#[arg(long, value_name = "IDS", value_delimiter = ',')]
only: Option<Vec<String>>,
#[arg(long, value_name = "IDS", value_delimiter = ',')]
exclude: Option<Vec<String>>,
},
}
#[derive(Subcommand, Debug)]
pub enum ListCommands {
Operations {
#[arg(short, long, value_name = "FILE")]
input: PathBuf,
},
}