Make service completion faster
@@ -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 -q --format "$format" --filter "name=$1"
}
# __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 "$@" "$current") )
}
# __docker_tasks returns a list of all task IDs.
