Base webui and backend additions

This commit is contained in:
2026-07-16 21:35:38 +02:00
parent d2b92401f1
commit 324367abd7
18 changed files with 1231 additions and 43 deletions
+42
View File
@@ -0,0 +1,42 @@
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
}