From f5eec494b49bb33822191a1efddba1f0ea2651f9 Mon Sep 17 00:00:00 2001 From: Benedikt Peetz Date: Tue, 14 Apr 2026 17:13:07 +0200 Subject: pkgs/aumo: Make resistent to labels containing spaces --- pkgs/by-name/au/aumo/aumo.sh | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) (limited to 'pkgs/by-name/au/aumo/aumo.sh') diff --git a/pkgs/by-name/au/aumo/aumo.sh b/pkgs/by-name/au/aumo/aumo.sh index dba5ef63..824d817a 100755 --- a/pkgs/by-name/au/aumo/aumo.sh +++ b/pkgs/by-name/au/aumo/aumo.sh @@ -25,18 +25,24 @@ usage() { echo "Usage: $NAME mount|unmount" } +is_label_mounted() { + label="$1" + + findmnt --output label --json | jq --arg label "$label" '.filesystems | map(.label) | sort | unique | map(select(. != null)) | index($label) != null' +} + get_mounted_labels() { findmnt --output label --json | jq '.filesystems | map(.label) | sort | unique | map(select(. != null))' } get_unmounted_labels() { first=true - find /dev/disk/by-label -printf "%P\n" | while read -r label; do - if ! get_mounted_labels | jq 'join("\n")' --raw-output | grep "$label" --quiet; then + fd . /dev/disk/by-label --format "{/.}" | while read -r label; do + if ! [ "$(is_label_mounted "$label")" = true ]; then if [ "$first" = "true" ]; then first=false else - printf "|" + printf "\0" fi printf "%s" "$label" fi @@ -44,13 +50,13 @@ get_unmounted_labels() { } unmounting() { - disk_name="$(get_mounted_labels | jq 'join("|")' --join-output | rofi -sep "|" -dmenu -p "Select disk to unmount")" + disk_name="$(get_mounted_labels | jq 'join("\u0000")' --join-output | rofi -sep "\0" -dmenu -p "Select disk to unmount" | sed 's/ /\\x20/')" udisksctl unmount --block-device "/dev/disk/by-label/$disk_name" } mounting() { - disk_name="$(get_unmounted_labels | rofi -sep "|" -dmenu -p "Select disk to mount")" + disk_name="$(get_unmounted_labels | rofi -sep "\0" -dmenu -p "Select disk to mount")" udisksctl mount --block-device "/dev/disk/by-label/$disk_name" } -- cgit v1.3.1