(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))))