Skip to content

Commit 92900eb

Browse files
committed
Persist settings in UserConfigDir
1 parent 396271e commit 92900eb

File tree

1 file changed

+33
-2
lines changed

1 file changed

+33
-2
lines changed

cmd/goose/settings.go

Lines changed: 33 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,28 @@ type Settings struct {
1515
HideStale bool `json:"hide_stale"`
1616
}
1717

18+
// getSettingsDir returns the configuration directory for settings.
19+
func getSettingsDir() (string, error) {
20+
configDir, err := os.UserConfigDir()
21+
if err != nil {
22+
return "", err
23+
}
24+
return filepath.Join(configDir, "ready-to-review"), nil
25+
}
26+
1827
// loadSettings loads settings from disk or returns defaults.
1928
func (app *App) loadSettings() {
20-
settingsPath := filepath.Join(app.cacheDir, "settings.json")
29+
settingsDir, err := getSettingsDir()
30+
if err != nil {
31+
log.Printf("Failed to get settings directory: %v", err)
32+
// Use defaults
33+
app.enableAudioCues = true
34+
app.enableReminders = true
35+
app.hideStaleIncoming = true
36+
return
37+
}
38+
39+
settingsPath := filepath.Join(settingsDir, "settings.json")
2140

2241
data, err := os.ReadFile(settingsPath)
2342
if err != nil {
@@ -50,6 +69,12 @@ func (app *App) loadSettings() {
5069

5170
// saveSettings saves current settings to disk.
5271
func (app *App) saveSettings() {
72+
settingsDir, err := getSettingsDir()
73+
if err != nil {
74+
log.Printf("Failed to get settings directory: %v", err)
75+
return
76+
}
77+
5378
app.mu.RLock()
5479
settings := Settings{
5580
EnableAudioCues: app.enableAudioCues,
@@ -58,7 +83,13 @@ func (app *App) saveSettings() {
5883
}
5984
app.mu.RUnlock()
6085

61-
settingsPath := filepath.Join(app.cacheDir, "settings.json")
86+
// Ensure directory exists
87+
if err := os.MkdirAll(settingsDir, 0o700); err != nil {
88+
log.Printf("Failed to create settings directory: %v", err)
89+
return
90+
}
91+
92+
settingsPath := filepath.Join(settingsDir, "settings.json")
6293

6394
data, err := json.MarshalIndent(settings, "", " ")
6495
if err != nil {

0 commit comments

Comments
 (0)