summaryrefslogtreecommitdiff
path: root/bin/common/aumount
diff options
context:
space:
mode:
authorRaymaekers Luca <raymaekers.luca@gmail.com>2023-07-19 11:35:58 +0200
committerRaymaekers Luca <raymaekers.luca@gmail.com>2023-07-19 11:35:58 +0200
commita4011543565cb769d82b5ef3ac9bda7a5298f14c (patch)
treee73dd79a88434cf2992e9cee57fe6201f629d79a /bin/common/aumount
parentca93eb95d535e30207aba84982475fbd9749d933 (diff)
replaced amount with aumount
Diffstat (limited to 'bin/common/aumount')
-rwxr-xr-xbin/common/aumount90
1 files changed, 90 insertions, 0 deletions
diff --git a/bin/common/aumount b/bin/common/aumount
new file mode 100755
index 0000000..790106d
--- /dev/null
+++ b/bin/common/aumount
@@ -0,0 +1,90 @@
+#!/bin/sh
+
+tmp="$(mktemp)"
+test "$(id -u)" != "0" && sudo="sudo"
+
+die ()
+{
+ echo "$@" >&2
+}
+
+# Read one character
+read_char ()
+{
+ die -n ">"
+ old_stty_cfg=$(stty -g)
+ stty raw
+ dd ibs=1 count=${1:-1} 2> /dev/null
+ stty $old_stty_cfg
+ die ""
+}
+
+# mount the device with $1 as the choice
+mount ()
+{
+ dev="$(grep "^$1\." "$tmp" | cut -f 2- -d ' ')"
+ test -z "$dev" && exit
+
+ die "mounting /dev/$dev on /media/$dev"
+ mkdir -p /media/$dev
+ $sudo mount /dev/$dev /media/$dev > /dev/null 2>&1 ||
+ return 1
+}
+
+# eject the device with $1 as the choice
+eject ()
+{
+ printf "$1" | grep -q "[0-9]" || exit 1
+ mountpoint="$(sed -n "${1}p" "$tmp" |
+ awk '{print $3}')"
+ test -z "$mountpoint" && exit 1
+
+ # Get device for mountpoint with df
+ dev="$(df -P "$mountpoint" |
+ tail -n +2 | head -n 1 | # skip headers
+ awk '{print $1}')"
+
+ die "ejecting $dev"
+ $sudo eject "$dev" &&
+ die "Succesfully ejected." ||
+ die "Failed to eject."
+}
+
+# print lsblk, use $1 to print only devices with mountpoints or without
+pr_lsblk ()
+{
+ clear
+ lsblk -o name,size,type,mountpoint
+ die "───────────────────────────────────"
+ lsblk --ascii -o name,mountpoint |
+ grep '^.-' |
+ while read line
+ do
+ words="$(printf "$line" | wc -w)"
+ test $words -eq ${1:-1} && continue
+ printf "%s\n" "$line"
+ done |
+ cut -f 2- -d "-" |
+ awk '{print NR ". " $0}' |
+ tee "$tmp" >&2
+}
+
+cleanup ()
+{
+ rm -f "$tmp"
+}
+
+trap cleanup EXIT INT
+
+die "m(ount) e(ject) ?"
+choice="$(read_char)"
+
+case $choice in
+ "m") i=2; cmd=mount ;;
+ "e") i=1; cmd=eject ;;
+ *) exit 1 ;;
+esac
+
+pr_lsblk $i
+choice="$(read_char)"
+$cmd $choice