103 lines
2.1 KiB
Plaintext
103 lines
2.1 KiB
Plaintext
_mount_module()
|
|
{
|
|
local cur prev OPTS
|
|
COMPREPLY=()
|
|
cur="${COMP_WORDS[COMP_CWORD]}"
|
|
prev="${COMP_WORDS[COMP_CWORD-1]}"
|
|
case $prev in
|
|
'-t'|'--types')
|
|
local prefix realcur TYPES
|
|
TYPES="
|
|
$(\ls /lib/modules/$(uname -r)/kernel/fs | awk '{print $1, "no" $1}')
|
|
$(awk '{print $NF, "no" $NF}' /proc/filesystems)
|
|
"
|
|
realcur="${cur##*,}"
|
|
prefix="${cur%$realcur}"
|
|
for WORD in $TYPES; do
|
|
if ! [[ $prefix == *"$WORD"* ]]; then
|
|
TYPE_COLS="$WORD ${TYPE_COLS:-""}"
|
|
fi
|
|
done
|
|
compopt -o nospace
|
|
COMPREPLY=( $(compgen -P "$prefix" -W "$TYPE_COLS" -S ',' -- $realcur) )
|
|
return 0
|
|
;;
|
|
'-L'|'--label')
|
|
local LABELS
|
|
LABELS="$(lsblk -o LABEL -nr)"
|
|
COMPREPLY=( $(compgen -W "$LABELS" -- $cur) )
|
|
return 0
|
|
;;
|
|
'-U'|'--uuid')
|
|
local UUIDS
|
|
UUIDS="$(lsblk -o UUID -nr)"
|
|
COMPREPLY=( $(compgen -W "$UUIDS" -- $cur) )
|
|
return 0
|
|
;;
|
|
'-N'|'--namespace')
|
|
local NAMESPACE
|
|
NAMESPACE="$(lsns --type mnt --output PATH --noheadings)"
|
|
COMPREPLY=( $(compgen -W "$NAMESPACE" -- $cur) )
|
|
return 0
|
|
;;
|
|
'--options-mode')
|
|
COMPREPLY=( $(compgen -W "ignore append prepend replace" -- $cur) )
|
|
return 0
|
|
;;
|
|
'--options-source')
|
|
COMPREPLY=( $(compgen -W "fstab mtab disable" -- $cur) )
|
|
return 0
|
|
;;
|
|
'-h'|'--help'|'-V'|'--version')
|
|
return 0
|
|
;;
|
|
esac
|
|
case $cur in
|
|
-*)
|
|
OPTS=" --all
|
|
--no-canonicalize
|
|
--fake
|
|
--fork
|
|
--fstab
|
|
--help
|
|
--internal-only
|
|
--show-labels
|
|
--no-mtab
|
|
--options
|
|
--options-mode
|
|
--options-source
|
|
--options-source-force
|
|
--test-opts
|
|
--read-only
|
|
--types
|
|
--source
|
|
--target
|
|
--verbose
|
|
--version
|
|
--read-write
|
|
--namespace
|
|
--label
|
|
--uuid
|
|
--bind
|
|
--move
|
|
--rbind
|
|
--make-shared
|
|
--make-slave
|
|
--make-private
|
|
--make-unbindable
|
|
--make-rshared
|
|
--make-rslave
|
|
--make-rprivate
|
|
--make-runbindable
|
|
--mkdir"
|
|
COMPREPLY=( $(compgen -W "${OPTS[*]}" -- $cur) )
|
|
return 0
|
|
;;
|
|
esac
|
|
local IFS=$'\n'
|
|
compopt -o filenames
|
|
COMPREPLY=( $(compgen -f -- $cur) )
|
|
return 0
|
|
}
|
|
complete -F _mount_module mount
|