diff options
author | EuAndreh <eu@euandre.org> | 2023-04-18 15:03:57 -0300 |
---|---|---|
committer | EuAndreh <eu@euandre.org> | 2023-04-18 15:03:57 -0300 |
commit | f8b76aa678663b3bb9a6908e3ac6dd9ae8ef73dc (patch) | |
tree | 1a52e4ed4f97cbf2438f8e5d3a1af788b1c67f37 /bin/mnt | |
parent | etc/guix/home.scm: Add "qpdf" package (diff) | |
download | dotfiles-f8b76aa678663b3bb9a6908e3ac6dd9ae8ef73dc.tar.gz dotfiles-f8b76aa678663b3bb9a6908e3ac6dd9ae8ef73dc.tar.xz |
bin/mnt: Add new utility
Diffstat (limited to 'bin/mnt')
-rwxr-xr-x | bin/mnt | 105 |
1 files changed, 105 insertions, 0 deletions
@@ -0,0 +1,105 @@ +#!/bin/sh +set -eu + +usage() { + cat <<-'EOF' + Usage: + mnt [-U UUID] ACTION NAME + mnt -h + EOF +} + +help() { + cat <<-'EOF' + + + Options: + -U UUID the id of the device under /dev/disks/by-uuid/ + -h, --help show this message + + ACTION either "on" or "off" + NAME the name of the external device + + + Automate mounting and unmounting encrypted files. + + + Examples: + + Mount UTCLOUD: + + $ mnt up UTCLOUD + EOF +} + + +for flag in "$@"; do + case "$flag" in + --) + break + ;; + --help) + usage + help + exit + ;; + *) + ;; + esac +done + +while getopts 'U:h' flag; do + case "$flag" in + U) + UUID="$OPTARG" + ;; + h) + usage + help + exit + ;; + *) + usage >&2 + exit 2 + ;; + esac +done +shift $((OPTIND - 1)) + +ACTION="${1:-}" +NAME="${2:-}" + +eval "$(assert-arg -- "$ACTION" 'ACTION')" +eval "$(assert-arg -- "$NAME" 'NAME')" + +if [ -z "${UUID:-}" ]; then + F="${XDG_DATA_HOME:-$HOME/.local/share}/mnt/id-mappings/$NAME" + if [ ! -e "$F" ]; then + printf 'Missing -U UUID, or entry in "%s".\n' "$F" + usage >&2 + exit 2 + fi + UUID="$(cat "$F")" +fi + + +up() { + pass show disks/"$NAME" | + head -n1 | + tr -d '\n' | + udisksctl unlock -b /dev/disk/by-uuid/"$UUID" --key-file=/dev/stdin + udisksctl mount -b /dev/mapper/luks-"$UUID" +} + +down() { + udisksctl unmount -b /dev/mapper/luks-"$UUID" + udisksctl lock -b /dev/disk/by-uuid/"$UUID" +} + +case "$ACTION" in + up|down) + "$ACTION" + ;; + *) + printf 'Unsupported ACTION: "%s".\n' "$ACTION" +esac |