about summary refs log tree commit diff
path: root/users/wpcarro/configs/.gnupg/export.sh
diff options
context:
space:
mode:
Diffstat (limited to 'users/wpcarro/configs/.gnupg/export.sh')
-rwxr-xr-xusers/wpcarro/configs/.gnupg/export.sh29
1 files changed, 29 insertions, 0 deletions
diff --git a/users/wpcarro/configs/.gnupg/export.sh b/users/wpcarro/configs/.gnupg/export.sh
new file mode 100755
index 0000000000..31def2beb1
--- /dev/null
+++ b/users/wpcarro/configs/.gnupg/export.sh
@@ -0,0 +1,29 @@
+#!/usr/bin/env bash
+
+set -euo pipefail
+
+# Run this script to export all the information required to transport your GPG
+# information.
+# Usage: ./export.sh
+# TODO: run this periodically as a job.
+
+output="$(pwd)/export.zip"
+destination="$(mktemp -d)"
+
+function cleanup() {
+  rm -rf "${destination}"
+}
+trap cleanup EXIT
+
+gpg --armor --export >"${destination}/public.asc"
+gpg --armor --export-secret-keys >"${destination}/secret.asc"
+gpg --armor --export-ownertrust >"${destination}/ownertrust.txt"
+
+# Strangely enough this appears to be the only way to create a zip of a
+# directory that doesn't contain the (noisy) full paths of each item from the
+# source filesystem. (i.e. -j doesn't cooperate with -r)
+pushd "${destination}"
+zip -r "${output}" ./*
+popd
+
+echo "$(realpath ${output})"