Skip to main content

openapi_model_generator/
cli.rs

1use clap::{Parser, ValueEnum};
2use std::path::PathBuf;
3
4use crate::generator::GenerateMode;
5
6#[derive(Debug, Clone, Copy, PartialEq, Eq, ValueEnum)]
7pub enum Mode {
8    /// Generate only models
9    Models,
10
11    /// Generate models and request types
12    Requests,
13
14    /// Generate models and response types
15    Responses,
16
17    /// Generate everything
18    All,
19}
20
21impl From<Mode> for GenerateMode {
22    fn from(mode: Mode) -> Self {
23        match mode {
24            Mode::Models => GenerateMode::MODELS,
25            Mode::Requests => GenerateMode::MODELS | GenerateMode::REQUESTS,
26            Mode::Responses => GenerateMode::MODELS | GenerateMode::RESPONSES,
27            Mode::All => GenerateMode::ALL,
28        }
29    }
30}
31
32#[derive(Parser, Debug)]
33#[command(author, version, about, long_about = None)]
34pub struct Args {
35    #[arg(short, long)]
36    pub input: PathBuf,
37
38    #[arg(short, long, default_value = "./generated")]
39    pub output: PathBuf,
40
41    /// Generation mode
42    #[arg(short = 'm', long, value_enum, default_value_t = Mode::All)]
43    pub mode: Mode,
44}