package settings import ( "encoding/json" "fmt" "os" "path/filepath" ) // LoadSettings reads and parses settings.json from dir. func LoadSettings(dir string) (Settings, error) { path := filepath.Join(dir, SettingsFileName) payload, err := os.ReadFile(path) if err != nil { return Settings{}, fmt.Errorf("read settings: %w", err) } var settings Settings if err := json.Unmarshal(payload, &settings); err != nil { return Settings{}, fmt.Errorf("parse settings: %w", err) } return settings, nil } // SaveSettings writes settings.json to dir with mode 0640. func SaveSettings(dir string, settings Settings) error { if err := ensureConfigDir(dir); err != nil { return err } payload, err := json.MarshalIndent(settings, "", " ") if err != nil { return fmt.Errorf("encode settings: %w", err) } payload = append(payload, '\n') path := filepath.Join(dir, SettingsFileName) if err := os.WriteFile(path, payload, 0o640); err != nil { return fmt.Errorf("write settings: %w", err) } return nil }