summaryrefslogtreecommitdiff
path: root/tools
diff options
context:
space:
mode:
authoryatin karel <yatin.karel@nectechnologies.in>2014-12-05 23:49:42 +0530
committeryatin <yatin.karel@nectechnologies.in>2015-03-17 14:21:48 +0000
commite2afc016b248cf618a7076ecac492c4496e1e54c (patch)
tree7c5f8a0a3dba990f84fda20ef390840225d25a48 /tools
parent7971b36c523a56d6aa243574aed7934a9a8db6f3 (diff)
downloadpython-cinderclient-e2afc016b248cf618a7076ecac492c4496e1e54c.tar.gz
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
Diffstat (limited to 'tools')
-rw-r--r--tools/cinder.bash_completion24
1 files changed, 18 insertions, 6 deletions
diff --git a/tools/cinder.bash_completion b/tools/cinder.bash_completion
index 060bf1f..60127b1 100644
--- a/tools/cinder.bash_completion
+++ b/tools/cinder.bash_completion
@@ -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)"
-
- COMPLETION_CACHE=~/.cinderclient/*/*-cache
- opts+=" "$(cat $COMPLETION_CACHE 2> /dev/null | tr '\n' ' ')
+ 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
- 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