Skip to content

Commit c6f15c4

Browse files
authored
Merge pull request #24 from open-edge-platform/global-config-validation-check
Add JSON Schema Validation to Global Config Loading
2 parents da3c04e + 17bab4d commit c6f15c4

1 file changed

Lines changed: 23 additions & 0 deletions

File tree

internal/config/config.go

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)