bash_completion now shows only subcommands when subcommand is "help"

Options and subcommands are filtered. Now Only subcommands are shown
when subcommands is "help". Both subcommands and options are shown
when subcommand is other than "help"

Change-Id: Iad9def1b2909af33fd23b0c89559b8de30fa6547
Closes-Bug: #1399747
This commit is contained in:
yatin karel 2014-12-05 23:49:42 +05:30 committed by yatin
parent 7971b36c52
commit e2afc016b2

View File

@ -1,15 +1,27 @@
_cinder_opts="" # lazy init
_cinder_flags="" # lazy init
_cinder_opts_exp="" # lazy init
_cinder()
{
local cur prev opts
local cur prev cbc cflags
COMPREPLY=()
cur="${COMP_WORDS[COMP_CWORD]}"
prev="${COMP_WORDS[COMP_CWORD-1]}"
opts="$(cinder bash_completion)"
if [ "x$_cinder_opts" == "x" ] ; then
cbc="`cinder bash-completion | sed -e "s/ *-h */ /" -e "s/ *-i */ /"`"
_cinder_opts="`echo "$cbc" | sed -e "s/--[a-z0-9_-]*//g" -e "s/ */ /g"`"
_cinder_flags="`echo " $cbc" | sed -e "s/ [^-][^-][a-z0-9_-]*//g" -e "s/ */ /g"`"
fi
COMPLETION_CACHE=~/.cinderclient/*/*-cache
opts+=" "$(cat $COMPLETION_CACHE 2> /dev/null | tr '\n' ' ')
COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) )
if [[ "$prev" != "help" ]] ; then
COMPLETION_CACHE=~/.cinderclient/*/*-cache
cflags="$_cinder_flags $_cinder_opts "$(cat $COMPLETION_CACHE 2> /dev/null | tr '\n' ' ')
COMPREPLY=($(compgen -W "${cflags}" -- ${cur}))
else
COMPREPLY=($(compgen -W "${_cinder_opts}" -- ${cur}))
fi
return 0
}
complete -F _cinder cinder