From f8b76aa678663b3bb9a6908e3ac6dd9ae8ef73dc Mon Sep 17 00:00:00 2001 From: EuAndreh Date: Tue, 18 Apr 2023 15:03:57 -0300 Subject: bin/mnt: Add new utility --- bin/mnt | 105 ++++++++++++++++++++++++++++++++++++++++++ share/mnt/id-mappings/UTCLOUD | 1 + 2 files changed, 106 insertions(+) create mode 100755 bin/mnt create mode 100644 share/mnt/id-mappings/UTCLOUD diff --git a/bin/mnt b/bin/mnt new file mode 100755 index 0000000..a666e48 --- /dev/null +++ b/bin/mnt @@ -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 diff --git a/share/mnt/id-mappings/UTCLOUD b/share/mnt/id-mappings/UTCLOUD new file mode 100644 index 0000000..e7ff31f --- /dev/null +++ b/share/mnt/id-mappings/UTCLOUD @@ -0,0 +1 @@ +b8f3f96d-597d-4410-8eb7-d403d9eac285 -- cgit v1.2.3