Move config file to XDG config dir

This commit is contained in:
Jan Bader
2026-07-20 20:41:24 +02:00
parent f603bbb8b8
commit 12aa0d4e21
3 changed files with 86 additions and 8 deletions
+29 -5
View File
@@ -120,18 +120,19 @@ func newCLIParser() (*flaggy.Parser, cliCommands) {
}
func loadConfigAndPassword() (config, string) {
homeDir, err := os.UserHomeDir()
configFile, legacyTarget, err := configFilePath()
if err != nil {
fmt.Println("Error getting user home directory:", err)
fmt.Println("Error finding config directory:", err)
os.Exit(1)
}
configFile := filepath.Join(homeDir, "docspell-cli.json")
configData, err := os.ReadFile(configFile)
if err != nil {
fmt.Println("Error reading config file:", err)
fmt.Printf("Error reading config file %s: %v\n", configFile, err)
os.Exit(1)
}
if legacyTarget != "" {
fmt.Fprintf(os.Stderr, "Warning: using legacy config file %s; move it to %s\n", configFile, legacyTarget)
}
var cfg config
if err := json.Unmarshal(configData, &cfg); err != nil {
@@ -149,6 +150,29 @@ func loadConfigAndPassword() (config, string) {
return cfg, strings.TrimSpace(string(password))
}
func configFilePath() (path string, legacyTarget string, err error) {
configDir, err := os.UserConfigDir()
if err != nil {
return "", "", err
}
xdgPath := filepath.Join(configDir, "docspell-cli", "config.json")
if _, err := os.Stat(xdgPath); err == nil {
return xdgPath, "", nil
} else if !os.IsNotExist(err) {
return xdgPath, "", nil
}
homeDir, err := os.UserHomeDir()
if err != nil {
return xdgPath, "", nil
}
legacyPath := filepath.Join(homeDir, "docspell-cli.json")
if _, err := os.Stat(legacyPath); err == nil {
return legacyPath, xdgPath, nil
}
return xdgPath, "", nil
}
func runImportCommand(cfg config, password string, args []string) {
options, err := parseImportOptions(args)
if err != nil {