aboutsummaryrefslogtreecommitdiff
path: root/src/distractionless/config.cljd
diff options
context:
space:
mode:
authorTim <contact@bytim.eu>2025-02-08 11:28:57 +0100
committerTim <contact@bytim.eu>2025-02-08 11:28:57 +0100
commitd69bc395e6cc9ed5e1da6a31835874142fe6800e (patch)
tree324cf18c710721c286890d78310ebe0075499ea4 /src/distractionless/config.cljd
downloaddistractionless-d69bc395e6cc9ed5e1da6a31835874142fe6800e.tar.xz
distractionless-d69bc395e6cc9ed5e1da6a31835874142fe6800e.zip
Initial commit
Diffstat (limited to 'src/distractionless/config.cljd')
-rw-r--r--src/distractionless/config.cljd29
1 files changed, 29 insertions, 0 deletions
diff --git a/src/distractionless/config.cljd b/src/distractionless/config.cljd
new file mode 100644
index 0000000..07d86b8
--- /dev/null
+++ b/src/distractionless/config.cljd
@@ -0,0 +1,29 @@
+(ns distractionless.config
+ (:require ["dart:io" :as io]
+ [cljd.reader :as cljdreader]))
+
+(defn read-from-file [^io/File file]
+ (->> (.readAsStringSync file)
+ cljdreader/read-string))
+
+(defn write-to-file! [^io/File file content reloader]
+ (->> content
+ pr-str
+ (.writeAsStringSync file))
+ (when (some? reloader)
+ (reset! reloader (when (= @reloader 0)
+ 1
+ 0))))
+
+(defn update-config! [^io/File file func reloader]
+ (let [new-content (-> (read-from-file file)
+ func)]
+ (write-to-file! file new-content reloader)
+ new-content))
+
+(defn init-config! [^io/File file reloader]
+ (when-not (.existsSync file)
+ (.createSync file)
+ (write-to-file! file {} reloader))
+ (when-not (contains? (read-from-file file) "favourites")
+ (prn (update-config! file #(assoc % "favourites" #{}) reloader))))