From d69bc395e6cc9ed5e1da6a31835874142fe6800e Mon Sep 17 00:00:00 2001 From: Tim Date: Sat, 8 Feb 2025 11:28:57 +0100 Subject: Initial commit --- src/distractionless/config.cljd | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 src/distractionless/config.cljd (limited to 'src/distractionless/config.cljd') 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)))) -- cgit v1.2.3