# -*- shell-script -*- mount-signal () { if mountpoint -q -- ~/.var/opt/signal/SignalCrypt.d; then printf '%s\n' 'mount-signal: already mounted' >&2 elif test -e /dev/mapper/SignalCrypt; then asroot env SIGNAL_DIR=~/.var/opt/signal sh -ec \ 'mount -- /dev/mapper/SignalCrypt "${SIGNAL_DIR}/SignalCrypt.d"' else gpg --decrypt ~/.var/opt/signal/SignalCrypt.key | \ key2root -k SignalCrypt env \ SIGNAL_IMG=~/.var/opt/signal/SignalCrypt.img \ SIGNAL_DIR=~/.var/opt/signal \ SIGNAL_DEV="$(losetup | sed 's/\s\+/ /g' | cut -d ' ' -f 1,6 | \ sed -n 's#\(/[^ ]*\) '"$(realpath -- ~/.var/opt/signal/SignalCrypt.img)"'$#\1#p' | sed 1q)" \ sh -ec ' if test -z "${SIGNAL_DEV}"; then SIGNAL_DEV="$(losetup --show -f -P "${SIGNAL_IMG}")" fi cryptsetup -d - open "${SIGNAL_DEV}" SignalCrypt mount -- /dev/mapper/SignalCrypt "${SIGNAL_DIR}/SignalCrypt.d" ' fi } umount-signal () { asroot env \ SIGNAL_DIR=~/.var/opt/signal \ SIGNAL_DEV="$(losetup | sed 's/\s\+/ /g' | cut -d ' ' -f 1,6 | \ sed -n 's#\(/[^ ]*\) '"$(realpath -- ~/.var/opt/signal/SignalCrypt.img)"'$#\1#p' | sed 1q)" \ sh -c ' if mountpoint -q -- "${SIGNAL_DIR}/SignalCrypt.d"; then umount -- "${SIGNAL_DIR}/SignalCrypt.d" fi if test -e /dev/mapper/SignalCrypt; then cryptsetup close SignalCrypt fi if test -n "${SIGNAL_DEV}"; then losetup -d "${SIGNAL_DEV}" fi ' }