aboutsummaryrefslogtreecommitdiff
path: root/src/distractionless/config.cljd
blob: 07d86b8745ce06cb9f1b584bc82cdd3d7145d53a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
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))))