;; SPDX-License-Identifier: Apache-2.0 ;; SPDX-FileCopyrightText: 2022 Sebastian Crane (ns system (:require [clojure.data.json :as json] [clj-yaml.core :as yaml])) (defn json-data-reader [key value] (if (= key :games) (into (empty value) (map #(hash-map (first %) (set (second %))) value)) value)) (defn load-state [f] (try (with-open [datafile (clojure.java.io/reader f)] (json/read datafile :value-fn json-data-reader :key-fn keyword)) (catch Exception e nil))) (defn save-state [f data] (try (with-open [datafile (clojure.java.io/writer f)] (json/write data datafile)) (catch Exception e nil))) (defn load-config [f] (try (with-open [datafile (clojure.java.io/reader f)] (yaml/parse-stream datafile)) (catch Exception e nil)))