use clap::{Parser, ValueEnum};
use std::path::PathBuf;
use crate::generator::GenerateMode;
#[derive(Debug, Clone, Copy, PartialEq, Eq, ValueEnum)]
pub enum Mode {
Models,
Requests,
Responses,
All,
}
impl From<Mode> for GenerateMode {
fn from(mode: Mode) -> Self {
match mode {
Mode::Models => GenerateMode::MODELS,
Mode::Requests => GenerateMode::MODELS | GenerateMode::REQUESTS,
Mode::Responses => GenerateMode::MODELS | GenerateMode::RESPONSES,
Mode::All => GenerateMode::ALL,
}
}
}
#[derive(Parser, Debug)]
#[command(author, version, about, long_about = None)]
pub struct Args {
#[arg(short, long)]
pub input: PathBuf,
#[arg(short, long, default_value = "./generated")]
pub output: PathBuf,
#[arg(short = 'm', long, value_enum, default_value_t = Mode::All)]
pub mode: Mode,
#[arg(long, default_value_t = false)]
pub display: bool,
}