From 929899cfe26772433531fa625a2f7d6d8c4aaaaa Mon Sep 17 00:00:00 2001 From: Feng Shengqin Date: Mon, 12 Dec 2016 23:35:26 +0800 Subject: [PATCH] Add auto-complete function for zun's commands Although zun's commands are simpler. But for users, auto-complete function is still more convenient. Change-Id: Id7b64f72a84db62fd6fa006f98c3e705f8cca095 Implements: blueprint zun-autocomplete-commands --- tools/zun.bash_completion | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 tools/zun.bash_completion diff --git a/tools/zun.bash_completion b/tools/zun.bash_completion new file mode 100644 index 00000000..4957a2ae --- /dev/null +++ b/tools/zun.bash_completion @@ -0,0 +1,27 @@ +_zun_opts="" # lazy init +_zun_flags="" # lazy init +_zun_opts_exp="" # lazy init +_zun() +{ + local cur prev nbc cflags + COMPREPLY=() + cur="${COMP_WORDS[COMP_CWORD]}" + prev="${COMP_WORDS[COMP_CWORD-1]}" + + if [ "x$_zun_opts" == "x" ] ; then + nbc="`zun bash-completion | sed -e "s/ *-h */ /" -e "s/ *-i */ /"`" + _zun_opts="`echo "$nbc" | sed -e "s/--[a-z0-9_-]*//g" -e "s/ */ /g"`" + _zun_flags="`echo " $nbc" | sed -e "s/ [^-][^-][a-z0-9_-]*//g" -e "s/ */ /g"`" + _zun_opts_exp="`echo "$_zun_opts" | tr ' ' '|'`" + fi + + if [[ " ${COMP_WORDS[@]} " =~ " "($_zun_opts_exp)" " && "$prev" != "help" ]] ; then + COMPLETION_CACHE=~/.zunclient/*/*-cache + cflags="$_zun_flags "$(cat $COMPLETION_CACHE 2> /dev/null | tr '\n' ' ') + COMPREPLY=($(compgen -W "${cflags}" -- ${cur})) + else + COMPREPLY=($(compgen -W "${_zun_opts}" -- ${cur})) + fi + return 0 +} +complete -F _zun zun