2024-08-16 14:29:19 +00:00
|
|
|
(ns dda.backup.backup
|
|
|
|
(:require
|
|
|
|
[orchestra.core :refer [defn-spec]]
|
|
|
|
[clojure.spec.alpha :as s]
|
2024-08-16 16:10:50 +00:00
|
|
|
[dda.backup.core.domain :as cd]
|
2024-08-16 15:36:28 +00:00
|
|
|
[dda.backup.backup.domain :as domain]
|
2024-08-16 16:10:50 +00:00
|
|
|
[dda.backup.core :as core]
|
2024-08-16 15:36:28 +00:00
|
|
|
[dda.backup.management :as mgm]
|
|
|
|
[dda.backup.infrastructure :as i]))
|
|
|
|
|
|
|
|
(s/def ::config
|
2024-08-16 17:13:11 +00:00
|
|
|
(s/keys :req-un [::domain/files ::cd/restic-repository ::cd/backup-path]
|
2024-08-16 16:10:50 +00:00
|
|
|
:opt-un [::cd/certificate-file ::cd/directory ::cd/debug ::cd/dry-run]))
|
2024-08-16 15:36:28 +00:00
|
|
|
|
|
|
|
(defn-spec backup! nil?
|
2024-08-16 17:13:11 +00:00
|
|
|
[config ::config]
|
2024-08-16 15:36:28 +00:00
|
|
|
(let [config-w-defaults (merge core/default config)]
|
|
|
|
(mgm/unlock! config-w-defaults)
|
|
|
|
(i/execute!
|
2024-08-16 17:13:11 +00:00
|
|
|
(domain/backup-files-command config-w-defaults)
|
2024-08-16 15:36:28 +00:00
|
|
|
config-w-defaults)
|
|
|
|
(mgm/forget! config-w-defaults)
|
|
|
|
))
|