Fix tab-completion of --flags under OS X

--flags were not tab-completing under OS X. This was due to the whitespace
collapsing regular expression using the '+' token (meaning one-or-more), which
isn't supported in OS X's version of sed.

Using the more portable '  *' instead of '[  ]+' fixes this.

Additional cleanups

* Remove unecessary embedding of tabs in the file (nova bash-complete doesn't
  emit tabs, so the regular expressions don't have to handle them)

* Restore logic to exclude -h from tab-completion (was lost in last
  tab-completion cleanup)

* Add similar exclude logic for -i

Fixes bug 1266667

Change-Id: I7e1fe8382d9b5295d0bbc1cde2b89550d5a4e21c
This commit is contained in:
Rick Harris 2014-01-07 01:40:03 -06:00
parent 2a7caa8bdb
commit f196ed0176

View File

@ -9,10 +9,10 @@ _nova()
prev="${COMP_WORDS[COMP_CWORD-1]}"
if [ "x$_nova_opts" == "x" ] ; then
nbc="`nova bash-completion | sed -e "s/[ ]+/ /"`"
_nova_opts="`echo "$nbc" | sed -e "s/--[a-z0-9_-]*//g" -e "s/[ ]+/ /g"`"
_nova_flags="`echo " $nbc" | sed -e "s/ [^-][^-][a-z0-9_-]*//g" -e "s/[ ]+/ /g"`"
_nova_opts_exp="`echo "$_nova_opts" | sed -e "s/[ ]/|/g"`"
nbc="`nova bash-completion | sed -e "s/ *-h */ /" -e "s/ *-i */ /"`"
_nova_opts="`echo "$nbc" | sed -e "s/--[a-z0-9_-]*//g" -e "s/ */ /g"`"
_nova_flags="`echo " $nbc" | sed -e "s/ [^-][^-][a-z0-9_-]*//g" -e "s/ */ /g"`"
_nova_opts_exp="`echo "$_nova_opts" | tr ' ' '|'`"
fi
if [[ " ${COMP_WORDS[@]} " =~ " "($_nova_opts_exp)" " && "$prev" != "help" ]] ; then