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