diff options
author | Tim <contact@bytim.eu> | 2025-02-08 11:28:57 +0100 |
---|---|---|
committer | Tim <contact@bytim.eu> | 2025-02-08 11:28:57 +0100 |
commit | d69bc395e6cc9ed5e1da6a31835874142fe6800e (patch) | |
tree | 324cf18c710721c286890d78310ebe0075499ea4 /src/distractionless/config.cljd | |
download | distractionless-d69bc395e6cc9ed5e1da6a31835874142fe6800e.tar.xz distractionless-d69bc395e6cc9ed5e1da6a31835874142fe6800e.zip |
Initial commit
Diffstat (limited to 'src/distractionless/config.cljd')
-rw-r--r-- | src/distractionless/config.cljd | 29 |
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)))) |