aboutsummaryrefslogtreecommitdiffstats
path: root/bash/aliases-Zenith
diff options
context:
space:
mode:
Diffstat (limited to 'bash/aliases-Zenith')
-rw-r--r--bash/aliases-Zenith49
1 files changed, 36 insertions, 13 deletions
diff --git a/bash/aliases-Zenith b/bash/aliases-Zenith
index 73db885..e4e7422 100644
--- a/bash/aliases-Zenith
+++ b/bash/aliases-Zenith
@@ -1,21 +1,44 @@
# -*- shell-script -*-
mount-crypt () {
- gpg --decrypt /media/Secondary/.crypt/crypt.key | \
- asroot env XDG_RUNTIME_DIR="${XDG_RUNTIME_DIR}" CRYPT_DIR=~/Crypt sh -ec '
- device="$(losetup --show -f -P /media/Secondary/.crypt/crypt.img)"
- printf "%s\n" "${device}" > "${XDG_RUNTIME_DIR}/CryptCrypt"
- cryptsetup -d - open "${device}" CryptCrypt
- mkdir -p "${CRYPT_DIR}"
- mount /dev/mapper/CryptCrypt "${CRYPT_DIR}"
- '
+ if mountpoint -q -- ~/Crypt; then
+ printf '%s\n' 'mount-crypt: already mounted' >&2
+ elif test -e /dev/mapper/CryptCrypt; then
+ asroot env CRYPT_DIR=~/Crypt sh -ec \
+ 'mount -- /dev/mapper/CryptCrypt "${CRYPT_DIR}"'
+ else
+ gpg --decrypt /media/Secondary/.crypt/crypt.key | \
+ key2root -k CryptCrypt env \
+ CRYPT_IMG=/media/Secondary/.crypt/crypt.img \
+ CRYPT_DIR=~/Crypt \
+ CRYPT_DEV="$(losetup | sed 's/\s\+/ /g' | cut -d ' ' -f 1,6 | \
+ sed -n 's#\(/[^ ]*\) '"$(realpath -- /media/Secondary/.crypt/crypt.img)"'$#\1#p' | sed 1q)" \
+ sh -ec '
+ if test -z "${CRYPT_DEV}"; then
+ CRYPT_DEV="$(losetup --show -f -P "${CRYPT_IMG}")"
+ fi
+ cryptsetup -d - open "${CRYPT_DEV}" CryptCrypt
+ mkdir -p -- "${CRYPT_DIR}"
+ mount -- /dev/mapper/CryptCrypt "${CRYPT_DIR}"
+ '
+ fi
}
umount-crypt () {
- asroot env XDG_RUNTIME_DIR="${XDG_RUNTIME_DIR}" CRYPT_DIR=~/Crypt sh -c '
- umount "${CRYPT_DIR}"
- rmdir "${CRYPT_DIR}"
- cryptsetup close CryptCrypt
- losetup --detach "$(cat -- "${XDG_RUNTIME_DIR}/CryptCrypt")"
+ asroot env \
+ CRYPT_DIR=~/Crypt \
+ CRYPT_DEV="$(losetup | sed 's/\s\+/ /g' | cut -d ' ' -f 1,6 | \
+ sed -n 's#\(/[^ ]*\) '"$(realpath -- /media/Secondary/.crypt/crypt.img)"'$#\1#p' | sed 1q)" \
+ sh -c '
+ if mountpoint -q -- "${CRYPT_DIR}"; then
+ umount -- "${CRYPT_DIR}"
+ fi
+ rmdir -- "${CRYPT_DIR}" || :
+ if test -e /dev/mapper/CryptCrypt; then
+ cryptsetup close CryptCrypt
+ fi
+ if test -n "${CRYPT_DEV}"; then
+ losetup -d "${CRYPT_DEV}"
+ fi
'
}