Fix bash completion when using command options
authorAllan Odgaard <git@abetarda.com>
Tue, 15 Apr 2014 07:23:47 +0000 (14:23 +0700)
committerAllan Odgaard <git@abetarda.com>
Tue, 15 Apr 2014 07:27:57 +0000 (14:27 +0700)
By quoting the ‘line’ variable we are making it a single word, but ‘getopts’ wants each option as its own word.

Previously bash completion would output an error for a line like: ‘ninja -vn targ‸’.

In addition to removing the quotes (to enable word expansion) I also used it as a regular variable, as that is what it is (not an array).

misc/bash-completion

index 2d6975b..93bc9a1 100644 (file)
@@ -26,7 +26,7 @@ _ninja_target() {
                        dir="."
                        line=$(echo ${COMP_LINE} | cut -d" " -f 2-)
                        # filter out all non relevant arguments but keep C for dirs
-                       while getopts C:f:j:l:k:nvd:t: opt "${line[@]}"; do
+                       while getopts C:f:j:l:k:nvd:t: opt $line; do
                                case $opt in
                                        C) dir="$OPTARG" ;;
                                esac