diff --git a/contrib/completion/bash/docker b/contrib/completion/bash/docker index bf6d627ef1..bc3f5d088f 100644 --- a/contrib/completion/bash/docker +++ b/contrib/completion/bash/docker @@ -550,17 +550,18 @@ __docker_complete_nodes() { # output to the IDs or names of matching items. This setting takes # precedence over the environment setting. __docker_services() { - local fields='$2' # default: service name only - [ "${DOCKER_COMPLETION_SHOW_SERVICE_IDS}" = yes ] && fields='$1,$2' # ID & name + local format='{{.Name}}' # default: service name only + [ "${DOCKER_COMPLETION_SHOW_SERVICE_IDS}" = yes ] && format='{{.ID}} {{.Name}}' # ID & name if [ "$1" = "--id" ] ; then - fields='$1' # IDs only + format='{{.ID}}' # IDs only shift elif [ "$1" = "--name" ] ; then - fields='$2' # names only + format='{{.Name}}' # names only shift fi - __docker_q service ls "$@" | awk "NR>1 {print $fields}" + + __docker_q service ls --quiet --format "$format" "$@" } # __docker_complete_services applies completion of services based on the current @@ -572,7 +573,7 @@ __docker_complete_services() { current="$2" shift 2 fi - COMPREPLY=( $(compgen -W "$(__docker_services "$@")" -- "$current") ) + COMPREPLY=( $(__docker_services "$@" --filter "name=$current") ) } # __docker_tasks returns a list of all task IDs.