syncable_cli/config/
types.rs1use serde::{Deserialize, Serialize};
2
3#[derive(Debug, Clone, Serialize, Deserialize)]
5pub struct Config {
6 pub analysis: AnalysisConfig,
7 pub generation: GenerationConfig,
8 pub output: OutputConfig,
9}
10
11#[derive(Debug, Clone, Serialize, Deserialize)]
13pub struct AnalysisConfig {
14 pub include_dev_dependencies: bool,
15 pub deep_analysis: bool,
16 pub ignore_patterns: Vec<String>,
17 pub max_file_size: usize,
18}
19
20#[derive(Debug, Clone, Serialize, Deserialize)]
22pub struct GenerationConfig {
23 pub dockerfile: DockerfileConfig,
24 pub compose: ComposeConfig,
25 pub terraform: TerraformConfig,
26}
27
28#[derive(Debug, Clone, Serialize, Deserialize)]
30pub struct DockerfileConfig {
31 pub base_image_override: Option<String>,
32 pub use_multi_stage: bool,
33 pub optimize_for_size: bool,
34 pub include_health_check: bool,
35}
36
37#[derive(Debug, Clone, Serialize, Deserialize)]
39pub struct ComposeConfig {
40 pub version: String,
41 pub include_database: bool,
42 pub include_redis: bool,
43}
44
45#[derive(Debug, Clone, Serialize, Deserialize)]
47pub struct TerraformConfig {
48 pub provider: String,
49 pub include_networking: bool,
50 pub include_monitoring: bool,
51}
52
53#[derive(Debug, Clone, Serialize, Deserialize)]
55pub struct OutputConfig {
56 pub format: OutputFormat,
57 pub overwrite_existing: bool,
58 pub create_backup: bool,
59}
60
61#[derive(Debug, Clone, Serialize, Deserialize)]
62pub enum OutputFormat {
63 Files,
64 Stdout,
65 Json,
66}
67
68impl Default for Config {
69 fn default() -> Self {
70 Self {
71 analysis: AnalysisConfig {
72 include_dev_dependencies: false,
73 deep_analysis: true,
74 ignore_patterns: vec![
75 "node_modules".to_string(),
76 ".git".to_string(),
77 "target".to_string(),
78 "build".to_string(),
79 ],
80 max_file_size: 1024 * 1024, },
82 generation: GenerationConfig {
83 dockerfile: DockerfileConfig {
84 base_image_override: None,
85 use_multi_stage: true,
86 optimize_for_size: true,
87 include_health_check: true,
88 },
89 compose: ComposeConfig {
90 version: "3.8".to_string(),
91 include_database: false,
92 include_redis: false,
93 },
94 terraform: TerraformConfig {
95 provider: "docker".to_string(),
96 include_networking: true,
97 include_monitoring: false,
98 },
99 },
100 output: OutputConfig {
101 format: OutputFormat::Files,
102 overwrite_existing: false,
103 create_backup: true,
104 },
105 }
106 }
107}