MCPcopy
hub / github.com/SurgeDM/Surge / LoadSettings

Function LoadSettings

internal/config/settings.go:333–357  ·  view source on GitHub ↗

LoadSettings loads settings from disk. Returns defaults if file doesn't exist or if the JSON is corrupt, so the application can always start.

()

Source from the content-addressed store, hash-verified

331// LoadSettings loads settings from disk. Returns defaults if file doesn't exist
332// or if the JSON is corrupt, so the application can always start.
333func LoadSettings() (*Settings, error) {
334 path := GetSettingsPath()
335
336 data, err := os.ReadFile(path)
337 if err != nil {
338 if os.IsNotExist(err) {
339 return DefaultSettings(), nil
340 }
341 return nil, err
342 }
343
344 settings := DefaultSettings() // Start with defaults to fill any missing fields
345 if err := json.Unmarshal(data, settings); err != nil {
346 utils.Debug("Warning: corrupt settings file %s: %v - using defaults", path, err)
347 defaults := DefaultSettings()
348 defaults.StartupWarnings = append(defaults.StartupWarnings,
349 fmt.Sprintf("Config: settings file is corrupt (%v) - all settings reset to defaults", err))
350 return defaults, nil
351 }
352
353 // Validate settings and roll back individual invalid fields to defaults
354 settings.Validate()
355
356 return settings, nil
357}
358
359// SettingMeta provides metadata for a single setting (for UI rendering).
360type SettingMeta struct {

Calls 4

DebugFunction · 0.92
GetSettingsPathFunction · 0.85
DefaultSettingsFunction · 0.85
ValidateMethod · 0.45