Bash completion: avoid 'compopt: command not found' errors on Mac OS
The shell builtin `compopt` is not available on the outdated bash version 3.2.57 that ships with Mac OS. It is used in Docker's bash completion to suppress trailing spaces in advanced completions of hash map options, e.g. `--log-opt`. If `compopt` is not available, the new behavior is to do nothing, i.e. the user will have to delete the additional space. Signed-off-by: Harald Albers <github@albersweb.de>
This commit is contained in:
parent
bfc785bf64
commit
9d8f9943e9
1 changed files with 22 additions and 16 deletions
|
@ -212,6 +212,12 @@ __docker_to_extglob() {
|
|||
echo "@($extglob)"
|
||||
}
|
||||
|
||||
# suppress trailing whitespace
|
||||
__docker_nospace() {
|
||||
# compopt is not available in ancient bash versions
|
||||
type compopt &>/dev/null && compopt -o nospace
|
||||
}
|
||||
|
||||
__docker_resolve_hostname() {
|
||||
command -v host >/dev/null 2>&1 || return
|
||||
COMPREPLY=( $(host 2>/dev/null "${cur%:}" | awk '/has address/ {print $4}') )
|
||||
|
@ -305,7 +311,7 @@ __docker_log_driver_options() {
|
|||
;;
|
||||
esac
|
||||
|
||||
compopt -o nospace
|
||||
__docker_nospace
|
||||
}
|
||||
|
||||
__docker_complete_log_driver_options() {
|
||||
|
@ -314,12 +320,12 @@ __docker_complete_log_driver_options() {
|
|||
case "${words[$cword-2]}$prev=" in
|
||||
*gelf-address=*)
|
||||
COMPREPLY=( $( compgen -W "udp" -S "://" -- "${cur#=}" ) )
|
||||
compopt -o nospace
|
||||
__docker_nospace
|
||||
return
|
||||
;;
|
||||
*syslog-address=*)
|
||||
COMPREPLY=( $( compgen -W "tcp udp unix" -S "://" -- "${cur#=}" ) )
|
||||
compopt -o nospace
|
||||
__docker_nospace
|
||||
return
|
||||
;;
|
||||
*syslog-facility=*)
|
||||
|
@ -492,7 +498,7 @@ _docker_cp() {
|
|||
*)
|
||||
__docker_containers_all
|
||||
COMPREPLY=( $( compgen -W "${COMPREPLY[*]}" -S ':' ) )
|
||||
compopt -o nospace
|
||||
__docker_nospace
|
||||
return
|
||||
;;
|
||||
esac
|
||||
|
@ -599,7 +605,7 @@ _docker_daemon() {
|
|||
return
|
||||
;;
|
||||
esac
|
||||
compopt -o nospace
|
||||
__docker_nospace
|
||||
return
|
||||
;;
|
||||
--log-level|-l)
|
||||
|
@ -662,7 +668,7 @@ _docker_events() {
|
|||
case "$prev" in
|
||||
--filter|-f)
|
||||
COMPREPLY=( $( compgen -S = -W "container event image" -- "$cur" ) )
|
||||
compopt -o nospace
|
||||
__docker_nospace
|
||||
return
|
||||
;;
|
||||
--since|--until)
|
||||
|
@ -777,7 +783,7 @@ _docker_images() {
|
|||
--filter|-f)
|
||||
COMPREPLY=( $( compgen -W "dangling=true label=" -- "$cur" ) )
|
||||
if [ "$COMPREPLY" = "label=" ]; then
|
||||
compopt -o nospace
|
||||
__docker_nospace
|
||||
fi
|
||||
return
|
||||
;;
|
||||
|
@ -975,7 +981,7 @@ _docker_ps() {
|
|||
;;
|
||||
--filter|-f)
|
||||
COMPREPLY=( $( compgen -S = -W "ancestor exited id label name status" -- "$cur" ) )
|
||||
compopt -o nospace
|
||||
__docker_nospace
|
||||
return
|
||||
;;
|
||||
--format|-n)
|
||||
|
@ -1207,18 +1213,18 @@ _docker_run() {
|
|||
;;
|
||||
'')
|
||||
COMPREPLY=( $( compgen -W '/' -- "$cur" ) )
|
||||
compopt -o nospace
|
||||
__docker_nospace
|
||||
;;
|
||||
/*)
|
||||
_filedir
|
||||
compopt -o nospace
|
||||
__docker_nospace
|
||||
;;
|
||||
esac
|
||||
return
|
||||
;;
|
||||
--env|-e)
|
||||
COMPREPLY=( $( compgen -e -- "$cur" ) )
|
||||
compopt -o nospace
|
||||
__docker_nospace
|
||||
return
|
||||
;;
|
||||
--ipc)
|
||||
|
@ -1230,7 +1236,7 @@ _docker_run() {
|
|||
*)
|
||||
COMPREPLY=( $( compgen -W 'host container:' -- "$cur" ) )
|
||||
if [ "$COMPREPLY" = "container:" ]; then
|
||||
compopt -o nospace
|
||||
__docker_nospace
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
|
@ -1243,7 +1249,7 @@ _docker_run() {
|
|||
*)
|
||||
__docker_containers_running
|
||||
COMPREPLY=( $( compgen -W "${COMPREPLY[*]}" -S ':' ) )
|
||||
compopt -o nospace
|
||||
__docker_nospace
|
||||
;;
|
||||
esac
|
||||
return
|
||||
|
@ -1265,7 +1271,7 @@ _docker_run() {
|
|||
*)
|
||||
COMPREPLY=( $( compgen -W "bridge none container: host" -- "$cur") )
|
||||
if [ "${COMPREPLY[*]}" = "container:" ] ; then
|
||||
compopt -o nospace
|
||||
__docker_nospace
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
|
@ -1289,12 +1295,12 @@ _docker_run() {
|
|||
local cur=${cur##*:}
|
||||
COMPREPLY=( $( compgen -W "user: role: type: level: disable" -- "$cur") )
|
||||
if [ "${COMPREPLY[*]}" != "disable" ] ; then
|
||||
compopt -o nospace
|
||||
__docker_nospace
|
||||
fi
|
||||
;;
|
||||
*)
|
||||
COMPREPLY=( $( compgen -W "label apparmor" -S ":" -- "$cur") )
|
||||
compopt -o nospace
|
||||
__docker_nospace
|
||||
;;
|
||||
esac
|
||||
return
|
||||
|
|
Loading…
Add table
Reference in a new issue