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 pub telemetry: TelemetryConfig, }
11
12#[derive(Debug, Clone, Serialize, Deserialize)]
14pub struct AnalysisConfig {
15 pub include_dev_dependencies: bool,
16 pub deep_analysis: bool,
17 pub ignore_patterns: Vec<String>,
18 pub max_file_size: usize,
19}
20
21#[derive(Debug, Clone, Serialize, Deserialize)]
23pub struct GenerationConfig {
24 pub dockerfile: DockerfileConfig,
25 pub compose: ComposeConfig,
26 pub terraform: TerraformConfig,
27}
28
29#[derive(Debug, Clone, Serialize, Deserialize)]
31pub struct DockerfileConfig {
32 pub base_image_override: Option<String>,
33 pub use_multi_stage: bool,
34 pub optimize_for_size: bool,
35 pub include_health_check: bool,
36}
37
38#[derive(Debug, Clone, Serialize, Deserialize)]
40pub struct ComposeConfig {
41 pub version: String,
42 pub include_database: bool,
43 pub include_redis: bool,
44}
45
46#[derive(Debug, Clone, Serialize, Deserialize)]
48pub struct TerraformConfig {
49 pub provider: String,
50 pub include_networking: bool,
51 pub include_monitoring: bool,
52}
53
54#[derive(Debug, Clone, Serialize, Deserialize)]
56pub struct OutputConfig {
57 pub format: OutputFormat,
58 pub overwrite_existing: bool,
59 pub create_backup: bool,
60}
61
62#[derive(Debug, Clone, Serialize, Deserialize)]
63pub enum OutputFormat {
64 Files,
65 Stdout,
66 Json,
67}
68
69#[derive(Debug, Clone, Serialize, Deserialize)]
71pub struct TelemetryConfig {
72 pub enabled: bool,
73}
74
75impl Default for Config {
76 fn default() -> Self {
77 Self {
78 analysis: AnalysisConfig {
79 include_dev_dependencies: false,
80 deep_analysis: true,
81 ignore_patterns: vec![
82 "node_modules".to_string(),
83 ".git".to_string(),
84 "target".to_string(),
85 "build".to_string(),
86 ],
87 max_file_size: 1024 * 1024, },
89 generation: GenerationConfig {
90 dockerfile: DockerfileConfig {
91 base_image_override: None,
92 use_multi_stage: true,
93 optimize_for_size: true,
94 include_health_check: true,
95 },
96 compose: ComposeConfig {
97 version: "3.8".to_string(),
98 include_database: false,
99 include_redis: false,
100 },
101 terraform: TerraformConfig {
102 provider: "docker".to_string(),
103 include_networking: true,
104 include_monitoring: false,
105 },
106 },
107 output: OutputConfig {
108 format: OutputFormat::Files,
109 overwrite_existing: false,
110 create_backup: true,
111 },
112 telemetry: TelemetryConfig {
113 enabled: true, },
115 }
116 }
117}