(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-key! [^io/File file reloader k dv] (when-not (contains? (read-from-file file) k) (prn (update-config! file #(assoc % k dv) reloader)))) (defn init-config! [^io/File file reloader] (when-not (.existsSync file) (.createSync file) (write-to-file! file {} reloader)) (init-key! file reloader "favourites" #{}) (init-key! file reloader "countdowns" {}))