@@ -113,6 +113,18 @@ func LoadGlobalConfig(configPath string) (*GlobalConfig, error) {
113113 if err := yaml .Unmarshal (data , config ); err != nil {
114114 return nil , fmt .Errorf ("parsing YAML config: %w" , err )
115115 }
116+
117+ // Convert to JSON for schema validation
118+ jsonData , err := json .Marshal (config )
119+ if err != nil {
120+ return nil , fmt .Errorf ("converting config to JSON for validation: %w" , err )
121+ }
122+
123+ // Validate against schema
124+ if err := validate .ValidateConfigJSON (jsonData ); err != nil {
125+ return nil , fmt .Errorf ("schema validation failed: %w" , err )
126+ }
127+
116128 default :
117129 return nil , fmt .Errorf ("unsupported config file format: %s (supported: .yaml, .yml)" , ext )
118130 }
@@ -135,6 +147,17 @@ func (gc *GlobalConfig) SaveGlobalConfig(configPath string) error {
135147 }
136148 }
137149
150+ // Convert to JSON for schema validation before saving
151+ jsonData , err := json .Marshal (gc )
152+ if err != nil {
153+ return fmt .Errorf ("converting config to JSON for validation: %w" , err )
154+ }
155+
156+ if err := validate .ValidateConfigJSON (jsonData ); err != nil {
157+ return fmt .Errorf ("config validation failed before save: %w" , err )
158+ }
159+
160+ // Marshal to YAML
138161 data , err := yaml .Marshal (gc )
139162 if err != nil {
140163 return fmt .Errorf ("marshaling config to YAML: %w" , err )
0 commit comments