Use ~/.jcode/ for all config, data, and plugins
ober
59d760f543d088cc6d84504ea59abef1e5e41810
--- a/src/jcode/core/config.ss +++ b/src/jcode/core/config.ss @@ -1,6 +1,7 @@ ;;; jcode configuration management (export load-config + jcode-home config-ref config-api-key config-model @@ -14,13 +15,16 @@ (def *config* (make-parameter #f)) +(def (jcode-home) + "Return ~/.jcode, creating it if needed." + (let ((dir (path-join (getenv "HOME") ".jcode"))) + (unless (file-exists? dir) (mkdir dir)) + dir)) + (def (config-paths) (list (path-join (current-directory) "jcode.json") - (path-join (or (getenv "XDG_CONFIG_HOME") - (path-join (getenv "HOME") ".config")) - "jcode" "config.json") - (path-join (getenv "HOME") ".jcode.json"))) + (path-join (jcode-home) "config.json"))) (def (find-config-file) (let loop ((paths (config-paths))) @@ -59,10 +63,8 @@ config)) (def (merge-opencode-keys! providers) - ;; Read ~/.local/share/opencode/auth.json for provider keys - (let ((auth-file (path-join (or (getenv "XDG_DATA_HOME") - (path-join (getenv "HOME") ".local" "share")) - "opencode" "auth.json"))) + ;; Read opencode auth.json for provider keys + (let ((auth-file (path-join (getenv "HOME") ".local" "share" "opencode" "auth.json"))) (when (file-exists? auth-file) (try (let ((auth (call-with-input-file auth-file read-json))) --- a/src/jcode/core/plugin.ss +++ b/src/jcode/core/plugin.ss @@ -17,9 +17,7 @@ (def (plugin-dirs) "Return list of directories to scan for plugins." - (let ((home-dir (path-join (or (getenv "XDG_CONFIG_HOME") - (path-join (getenv "HOME") ".config")) - "jcode" "plugins")) + (let ((home-dir (path-join (jcode-home) "plugins")) (local-dir (path-join (current-directory) ".jcode" "plugins")) (cfg-dirs (config-ref "pluginDirs"))) (filter file-directory? --- a/src/jcode/core/session.ss +++ b/src/jcode/core/session.ss @@ -17,17 +17,13 @@ :std/misc/uuid :std/os/path :std/text/json + ./config ./message) (defstruct session (id title created messages)) (def (db-path) - (let* ((data-dir (or (getenv "XDG_DATA_HOME") - (path-join (getenv "HOME") ".local" "share"))) - (dir (path-join data-dir "jcode"))) - (unless (file-exists? dir) - (mkdir dir)) - (path-join dir "sessions.db"))) + (path-join (jcode-home) "sessions.db")) (def (open-db) (sqlite-open (db-path)))