summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoreltrac <hi@eltr.ac>2026-07-04 11:37:34 +0800
committereltrac <hi@eltr.ac>2026-07-04 11:37:34 +0800
commitd1cea6216995bce18dbd87758d59637ec60d55bb (patch)
treef92a722b0a2ed190768c5f9fd7b70801d926cf3b
parent83de67d37364d24b459fe10c54bb62e34814833d (diff)
read config from a specified path
-rw-r--r--main.clj25
1 files changed, 23 insertions, 2 deletions
diff --git a/main.clj b/main.clj
index 37bde9d..0c671f3 100644
--- a/main.clj
+++ b/main.clj
@@ -1,12 +1,33 @@
#!/usr/bin/env bb
(require '[babashka.tasks :refer [shell]]
+ '[babashka.fs :as fs]
'[clojure.edn :as edn])
-(def vimulti-config "config.edn")
+(def default-config
+ {:editor-command "nvim"
+ :editor-config "/Users/eltrac/.config/nvim/"
+ :default-branch "master"})
+
+(defn- config-path []
+ (let [env-vimnulti-config (System/getenv "VIMULTI_CONFIG")
+ env-xdg-config-home (System/getenv "XDG_CONFIG_HOME")
+ config-filename "config.edn"]
+ (or env-vimnulti-config
+ (if env-xdg-config-home
+ (str env-xdg-config-home "/vimulti/" config-filename)
+ config-filename))))
+
+(defn- init-config [path]
+ (when-not (fs/exists? path)
+ (fs/create-dirs (fs/parent path))
+ (fs/create-file path)
+ (spit path default-config))
+ path)
+
(let [[branch-name & args] *command-line-args*
- config (-> vimulti-config slurp edn/read-string)
+ config (-> (config-path) init-config slurp edn/read-string)
current-branch (or
(shell {:dir (:editor-config config)
:out :string}