matchbot/src/system.clj

35 lines
917 B
Clojure

;; SPDX-License-Identifier: Apache-2.0
;; SPDX-FileCopyrightText: 2022 Sebastian Crane <seabass-labrax@gmx.com>
(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)))