modprobe: Try parsing help before using hardcoding option list

master
Ville Skyttä 2014-06-09 09:28:51 +03:00
parent 454f67a047
commit c6ec8f979b
2 changed files with 20 additions and 10 deletions

View File

@ -2,10 +2,13 @@
_modprobe()
{
local cur prev words cword
_init_completion || return
local cur prev words cword split
_init_completion -s || return
case "$prev" in
-h|--help|-V|--version)
return
;;
-C|--config)
_filedir
return
@ -20,13 +23,20 @@ _modprobe()
;;
esac
$split && return
if [[ "$cur" == -* ]]; then
COMPREPLY=( $( compgen -W '-a --all -b --use-blacklist -C --config -c
--showconfig --dump-modversions -d --dirname --first-time
--force-vermagic --force-modversion -f --force -i --ignore-install
--ignore-remove -l --list -n --dry-run -q --quiet -R
--resolve-alias -r --remove -S --set-version --show-depends -s
--syslog -t --type -V --version -v --verbose' -- "$cur" ) )
COMPREPLY=( $( compgen -W '$( _parse_help "$1" )' -- "$cur" ) )
if [[ ! $COMPREPLY ]]; then
COMPREPLY=( $( compgen -W '-a --all -b --use-blacklist -C --config
-c --showconfig --dump-modversions -d --dirname --first-time
--force-vermagic --force-modversion -f --force -i
--ignore-install --ignore-remove -l --list -n --dry-run -q
--quiet -R --resolve-alias -r --remove -S --set-version
--show-depends -s --syslog -t --type -V --version -v
--verbose' -- "$cur" ) )
fi
[[ $COMPREPLY == *= ]] && compopt -o nospace
return
fi

View File

@ -11,8 +11,8 @@ proc teardown {} {
setup
set test "--remov<TAB> should complete \"--remove\""
assert_complete "--remove" "modprobe --remov" $test
set test "--al<TAB> should complete \"--all\""
assert_complete "--all" "modprobe --al" $test
sync_after_int