openapi_nexus/config/
global_config.rs1use clap::Args;
4use serde::{Deserialize, Serialize};
5
6use crate::codegen::GeneratorType;
7
8#[derive(Debug, Clone, Args, Serialize, Deserialize)]
10pub struct GlobalConfig {
11 #[arg(short = 'o', long, env = "OPENAPI_NEXUS_OUTPUT")]
13 pub output: Option<String>,
14
15 #[arg(short = 'g', long, env = "OPENAPI_NEXUS_GENERATORS")]
17 pub generators: Option<Vec<GeneratorType>>,
18}
19
20fn default_output() -> String {
21 "generated/{generator}".to_string()
22}
23
24impl Default for GlobalConfig {
25 fn default() -> Self {
26 Self {
27 output: Some(default_output()),
28 generators: None,
29 }
30 }
31}
32
33impl GlobalConfig {
34 pub fn output_for_generator(&self, generator: GeneratorType) -> String {
41 let generator_str = generator.to_string();
42 let language = generator.language().to_string();
43 let framework = generator.framework();
44
45 let output = self.output.clone().unwrap_or_else(default_output);
46 output
47 .replace("{generator}", &generator_str)
48 .replace("{language}", &language)
49 .replace("{framework}", &framework)
50 }
51}