From 298e0921aeb081ab1e3f8aa93ab3814a849877a2 Mon Sep 17 00:00:00 2001 From: Steven Hardy Date: Wed, 16 May 2012 09:36:43 +0100 Subject: [PATCH] heat cli : Add options to bash completion script Ref #87 add completion of long-format options, align the command options with the "heat help" option Signed-off-by: Steven Hardy --- etc/bash_completion.d/heat | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/etc/bash_completion.d/heat b/etc/bash_completion.d/heat index 0cde40606d..4b04ef52e7 100644 --- a/etc/bash_completion.d/heat +++ b/etc/bash_completion.d/heat @@ -4,15 +4,19 @@ _heat() COMPREPLY=() cur="${COMP_WORDS[COMP_CWORD]}" prev="${COMP_WORDS[COMP_CWORD-1]}" - opts=`for i in $(heat --help | grep -A100 "^Commands" | grep -B100 "^Options" | grep "^\s*[a-z]" | awk '{print $1}'); do echo $i; done` - if [[ ${cur} == * ]]; then - if [[ ${#COMP_WORDS[@]} -gt 2 ]]; then - return 0 - else - COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) ) - return 0 - fi - fi + if [[ ${cur} == -* ]]; then + opts=$(heat --help | grep -A100 "^Options" | sed -r "s/^[[:space:]]*-[[:alpha:]]([[:space:]][[:alpha:]_]*,|,)[[:space:]]//" | cut -d "=" -f1 | grep "^--" | awk '{print $1}') + COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) ) + return 0 + fi + + if [[ ${#COMP_WORDS[@]} -gt 2 ]]; then + return 0 + else + cmds=$(heat help | awk '{print $1}' | egrep -v "^(Usage|Commands|$)") + COMPREPLY=( $(compgen -W "${cmds}" -- ${cur}) ) + return 0 + fi } complete -F _heat heat