Adds zsh completion

Use nova bash-completion to add native zsh completion using built in
parameter expansion.  Nothing spectacular or new, this is mostly so that
zsh users do not need to autoload bashcompinit just to use nova.

Change-Id: I56f62f036e0c85e79197f4c7dfd25abf7eb4110a
Implements: zsh completion
This commit is contained in:
Daniel Wallace 2013-06-28 20:19:55 -05:00
parent b526c9beff
commit 2770e059e9
1 changed files with 29 additions and 0 deletions

29
tools/nova.zsh_completion Normal file
View File

@ -0,0 +1,29 @@
#compdef nova
local -a nbc _nova_opts _nova_flags _nova_opts_exp cur prev
nbc=(${(ps: :)$(_call_program options "$service bash-completion" 2>/dev/null)})
_nova_opts=(${nbc:#-*})
_nova_flags=(${(M)nbc:#-*})
_nova_opt_exp=${${nbc:#-*}// /|}
cur=$words[CURRENT]
prev=$words[(( CURRENT - 1 ))]
_checkcomp(){
for word in $words[@]; do
if [[ -n ${_nova_opts[(r)$word]} ]]; then
return 0
fi
done
return 1
}
echo $_nova_opts[@] |grep --color nova
if [[ "$prev" != "help" ]] && _checkcomp; then
COMPLETION_CACHE=(~/.novaclient/*/*-cache)
cflags=($_nova_flags[@] ${(ps: :)$(cat $COMPLETION_CACHE 2>/dev/null)})
compadd "$@" -d $cflags[@]
else
compadd "$@" -d $_nova_opts[@]
fi