openapi_nexus_core/
generator.rs

1//! Generator configuration and management
2
3use crate::error::Error;
4use openapi_nexus_common::Language;
5
6/// Configuration for code generation
7#[derive(Debug, Clone)]
8pub struct GeneratorConfig {
9    /// Output directory for generated code
10    pub output_dir: std::path::PathBuf,
11    /// Language to generate code for
12    pub language: Language,
13    /// Whether to overwrite existing files
14    pub overwrite: bool,
15}
16
17impl Default for GeneratorConfig {
18    fn default() -> Self {
19        Self {
20            output_dir: std::path::PathBuf::from("generated"),
21            language: Language::TypeScript,
22            overwrite: false,
23        }
24    }
25}
26
27impl GeneratorConfig {
28    /// Create a new generator configuration
29    pub fn new() -> Self {
30        Self::default()
31    }
32
33    /// Set the output directory
34    pub fn output_dir<P: Into<std::path::PathBuf>>(mut self, dir: P) -> Self {
35        self.output_dir = dir.into();
36        self
37    }
38
39    /// Set the language to generate
40    pub fn language(mut self, language: Language) -> Self {
41        self.language = language;
42        self
43    }
44
45    /// Set whether to overwrite existing files
46    pub fn overwrite(mut self, overwrite: bool) -> Self {
47        self.overwrite = overwrite;
48        self
49    }
50
51    /// Validate the configuration
52    pub fn validate(&self) -> Result<(), Error> {
53        // All languages in the enum are supported
54        Ok(())
55    }
56}