Files
ClusterCanvas/service/internal/settings/settings.go
T

43 lines
1022 B
Go

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
}