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
|