about summary refs log tree commit diff stats
path: root/pkgs/by-name/au/aumo/aumo.sh
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/by-name/au/aumo/aumo.sh')
-rwxr-xr-xpkgs/by-name/au/aumo/aumo.sh38
1 files changed, 34 insertions, 4 deletions
diff --git a/pkgs/by-name/au/aumo/aumo.sh b/pkgs/by-name/au/aumo/aumo.sh
index 84d39deb..d86165b2 100755
--- a/pkgs/by-name/au/aumo/aumo.sh
+++ b/pkgs/by-name/au/aumo/aumo.sh
@@ -1,16 +1,46 @@
 #! /usr/bin/env dash
 
-# shellcheck source=/dev/null
-SHELL_LIBRARY_VERSION="2.1.2" . %SHELL_LIBRARY_PATH
+NAME="aumo"
+
+error() {
+    printf "\033[1;91m==> ERROR:\033[0m \033[1;93m%s\033[0m\n" "$*" >&2
+}
+
+die() {
+    error "$1"
+    if [ -n "$2" ]; then
+        exit "$2"
+    else
+        exit 1
+    fi
+}
+
+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
+            if [ "$first" = "true" ]; then
+                first=false
+            else
+                printf "|"
+            fi
+            printf "%s" "$label"
+        fi
+    done
+}
 
 unmounting() {
-    disk_name="$(find /dev/disk/by-label -type l -printf "%P|" | rofi -sep "|" -dmenu -p "Select disk to mount")"
+    disk_name="$(get_mounted_labels | jq 'join("|")' --join-output | rofi -sep "|" -dmenu -p "Select disk to unmount")"
 
     udisksctl unmount --block-device "/dev/disk/by-label/$disk_name"
 }
 
 mounting() {
-    disk_name="$(find /dev/disk/by-label -type l -printf "%P|" | rofi -sep "|" -dmenu -p "Select disk to mount")"
+    disk_name="$(get_unmounted_labels | rofi -sep "|" -dmenu -p "Select disk to mount")"
 
     udisksctl mount --block-device "/dev/disk/by-label/$disk_name"
 }