diff --git a/.gitignore b/.gitignore index 3b510a3..677661e 100644 --- a/.gitignore +++ b/.gitignore @@ -110,4 +110,5 @@ venv.bak/ .clj-kondo/ .lsp/ .calva/ -.cpcache/ \ No newline at end of file +.cpcache/ +infrastructure/backup/image/resources/backup-repository-state.edn diff --git a/infrastructure/backup/image/resources/restic_management.clj b/infrastructure/backup/image/resources/restic_management.clj new file mode 100755 index 0000000..1723193 --- /dev/null +++ b/infrastructure/backup/image/resources/restic_management.clj @@ -0,0 +1,33 @@ +#! /usr/bin/env bb + +(ns restic-management + (:require + [clojure.spec.alpha :as s] + [clojure.java.io :as io] + [clojure.edn :as edn])) + +(s/def ::state string?) + +(s/def ::backup-repository-state + (s/keys :req-un [::state])) + +(def state {:state ""}) + +(defn store-backup-repository-state [s] + (spit "backup-repository-state.edn" s)) + +(defn read-backup-repository-state [] + (try + (with-open [r (io/reader "backup-repository-state.edn")] + (edn/read (java.io.PushbackReader. r))) + + (catch java.io.IOException e + (printf "Couldn't open '%s': %s\n" "backup-repository-state.edn" (.getMessage e))) + (catch RuntimeException e + (printf "Error parsing edn file '%s': %s\n" "backup-repository-state.edn" (.getMessage e))))) + +(println (read-backup-repository-state)) + +(println (:state (read-backup-repository-state))) + +(println (s/valid? ::backup-repository-state (read-backup-repository-state)))