mirror of
https://github.com/spf13/cobra
synced 2024-11-24 14:47:12 +00:00
Restore bash completion behaviour for bash 4.x
In Pull Request #178, the use of `builtin compopt` as a test condition is inappropriate. Use `[[ $(type -t compopt) = "builtin" ]]` instead. Also clean up formatting of the resulting bash completion script.
This commit is contained in:
parent
5c40aa85ca
commit
0e4c02d9cb
1 changed files with 13 additions and 13 deletions
|
@ -60,8 +60,8 @@ __handle_reply()
|
||||||
__debug "${FUNCNAME}"
|
__debug "${FUNCNAME}"
|
||||||
case $cur in
|
case $cur in
|
||||||
-*)
|
-*)
|
||||||
if builtin compopt > /dev/null 2>&1; then
|
if [[ $(type -t compopt) = "builtin" ]]; then
|
||||||
compopt -o nospace
|
compopt -o nospace
|
||||||
fi
|
fi
|
||||||
local allflags
|
local allflags
|
||||||
if [ ${#must_have_one_flag[@]} -ne 0 ]; then
|
if [ ${#must_have_one_flag[@]} -ne 0 ]; then
|
||||||
|
@ -70,8 +70,8 @@ __handle_reply()
|
||||||
allflags=("${flags[*]} ${two_word_flags[*]}")
|
allflags=("${flags[*]} ${two_word_flags[*]}")
|
||||||
fi
|
fi
|
||||||
COMPREPLY=( $(compgen -W "${allflags[*]}" -- "$cur") )
|
COMPREPLY=( $(compgen -W "${allflags[*]}" -- "$cur") )
|
||||||
if builtin compopt > /dev/null 2>&1; then
|
if [[ $(type -t compopt) = "builtin" ]]; then
|
||||||
[[ $COMPREPLY == *= ]] || compopt +o nospace
|
[[ $COMPREPLY == *= ]] || compopt +o nospace
|
||||||
fi
|
fi
|
||||||
return 0;
|
return 0;
|
||||||
;;
|
;;
|
||||||
|
@ -179,11 +179,11 @@ __handle_word()
|
||||||
{
|
{
|
||||||
if [[ $c -ge $cword ]]; then
|
if [[ $c -ge $cword ]]; then
|
||||||
__handle_reply
|
__handle_reply
|
||||||
return
|
return
|
||||||
fi
|
fi
|
||||||
__debug "${FUNCNAME}: c is $c words[c] is ${words[c]}"
|
__debug "${FUNCNAME}: c is $c words[c] is ${words[c]}"
|
||||||
if [[ "${words[c]}" == -* ]]; then
|
if [[ "${words[c]}" == -* ]]; then
|
||||||
__handle_flag
|
__handle_flag
|
||||||
elif __contains_word "${words[c]}" "${commands[@]}"; then
|
elif __contains_word "${words[c]}" "${commands[@]}"; then
|
||||||
__handle_command
|
__handle_command
|
||||||
else
|
else
|
||||||
|
@ -220,13 +220,13 @@ func postscript(out *bytes.Buffer, name string) {
|
||||||
}
|
}
|
||||||
|
|
||||||
`, name)
|
`, name)
|
||||||
fmt.Fprintf(out, `
|
fmt.Fprintf(out, `if [[ $(type -t compopt) = "builtin" ]]; then
|
||||||
if builtin compopt > /dev/null 2>&1; then
|
complete -F __start_%s %s
|
||||||
complete -F __start_%s %s
|
else
|
||||||
else
|
complete -o nospace -F __start_%s %s
|
||||||
complete -o nospace -F __start_%s %s
|
fi
|
||||||
fi
|
|
||||||
`, name, name, name, name)
|
`, name, name, name, name)
|
||||||
fmt.Fprintf(out, "# ex: ts=4 sw=4 et filetype=sh\n")
|
fmt.Fprintf(out, "# ex: ts=4 sw=4 et filetype=sh\n")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue