diff options
| author | EuAndreh <eu@euandre.org> | 2025-12-04 06:17:50 -0300 |
|---|---|---|
| committer | EuAndreh <eu@euandre.org> | 2025-12-04 06:25:04 -0300 |
| commit | 13edba0fa2bd4c3847160809499ce837f52d1264 (patch) | |
| tree | 73c1df9c4e2d1b36102eddfffb52babb98c5d406 /etc | |
| parent | etc/transactor.properties.tmpl: Default to "tmp" for data-dir (diff) | |
| download | datomic-13edba0fa2bd4c3847160809499ce837f52d1264.tar.gz datomic-13edba0fa2bd4c3847160809499ce837f52d1264.tar.xz | |
Diffstat (limited to 'etc')
| -rw-r--r-- | etc/backup.clj | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/etc/backup.clj b/etc/backup.clj new file mode 100644 index 0000000..ae4a380 --- /dev/null +++ b/etc/backup.clj @@ -0,0 +1,45 @@ +(ns backup + (:require [clojure.edn :as edn] + [datomic.require :as req] + [datomic.cli :as cli])) + +(def commands + "Map of command names to descriptions of command arguments." + {"backup" + {:f 'datomic.backup-cli/backup + :named #{{:long-name :from-db-uri :required true :doc "URI for backup source"} + {:long-name :to-backup-uri :required true :doc "URI for backup destination"}} + :positional [:from-db-uri :to-backup-uri]} + "list" + {:f 'datomic.backup-cli/list-backups + :named #{{:long-name :backup-uri :required true :doc "backup URI"}} + :positional [:backup-uri :to-db-uri]} + "verify" + {:f 'datomic.backup-cli/verify-backup + :named #{{:long-name :backup-uri :required true :doc "URI of backup"} + {:long-name :read-all :required true :doc "Verify that every segment is readable" :coerce #(boolean (edn/read-string %))} + {:long-name :t :required true :doc "Point in time (t) to verify" :coerce #(Long. %)}} + :positional [:backup-uri :read-all :t]} + "restore" + {:f 'datomic.backup-cli/restore + :named #{{:long-name :from-backup-uri :required true :doc "URI for restore source"} + {:long-name :to-db-uri :required true :doc "URI for restore destination"} + {:long-name :t :doc "Point in time (t) to restore, defaults to most recent" + :default nil :coerce #(Long. %)}} + :positional [:from-backup-uri :to-db-uri :t]}}) + +(defn -main + [& [command & cli-args]] + (if-let [{:keys [f named positional vararg]} (get commands command)] + (let [args (cli/parse-or-exit! command cli-args named positional vararg)] + (try + (when-let [result (req/require-and-run f args)] + (println result)) + (catch Throwable t + (.printStackTrace t) + (cli/fail (.getMessage t)))) + (when @cli/exit-after-command + (System/exit (if @cli/failed 1 0)))) + (binding [*out* *err*] + (println (str "Bad command: \"" command "\".")) + (System/exit 2)))) |
