summaryrefslogtreecommitdiff
path: root/tools/cinder.bash_completion
diff options
context:
space:
mode:
Diffstat (limited to 'tools/cinder.bash_completion')
-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