From b30d2503205280c4a9eaff86605bb0de30ef6f55 Mon Sep 17 00:00:00 2001 From: Ulysses Souza Date: Wed, 23 Jun 2021 09:41:00 -0300 Subject: [PATCH 1/3] Add completion for docker-compose plugin Signed-off-by: Ulysses Souza (cherry picked from commit 1148163c3ec90fc78b8f385e065984989b018e8b) Signed-off-by: Sebastiaan van Stijn --- contrib/completion/bash/docker | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/contrib/completion/bash/docker b/contrib/completion/bash/docker index 347165e0101f..f6ee8187c6ed 100644 --- a/contrib/completion/bash/docker +++ b/contrib/completion/bash/docker @@ -5485,6 +5485,23 @@ _docker_wait() { _docker_container_wait } +_docker_compose() { + local composePluginPath="${HOME}/.docker/cli-plugins/docker-compose" + local completionCommand="__completeNoDesc" + local resultArray=(${composePluginPath} ${completionCommand} compose) + for value in "${words[@]:2}" + do + if [[ "${value}" == "" ]] ; then + resultArray+=( "''" ) + else + resultArray+=( "${value}" ) + fi + done + local result=$(eval "${resultArray[*]}" 2> /dev/null) + + COMPREPLY=( $(compgen -W "${result%%:*}" -- "$current") ) +} + _docker() { local previous_extglob_setting=$(shopt -p extglob) shopt -s extglob @@ -5554,11 +5571,15 @@ _docker() { wait ) + local known_plugin_commands=( + compose + ) + local experimental_server_commands=( checkpoint ) - local commands=(${management_commands[*]} ${top_level_commands[*]}) + local commands=(${management_commands[*]} ${top_level_commands[*]} ${known_plugin_commands[*]}) [ -z "$DOCKER_HIDE_LEGACY_COMMANDS" ] && commands+=(${legacy_commands[*]}) # These options are valid as global options for all client commands From 613b9362d0a6ad347867d4b4dc8edcaabb5c345c Mon Sep 17 00:00:00 2001 From: Ulysses Souza Date: Thu, 8 Jul 2021 09:07:08 -0300 Subject: [PATCH 2/3] Detect compose plugin Signed-off-by: Ulysses Souza (cherry picked from commit 5a8d7d506cbbe7cd0df3ed3903cb27a90a51e142) Signed-off-by: Sebastiaan van Stijn --- contrib/completion/bash/docker | 24 +++++++++++++----------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/contrib/completion/bash/docker b/contrib/completion/bash/docker index f6ee8187c6ed..5a2052c83559 100644 --- a/contrib/completion/bash/docker +++ b/contrib/completion/bash/docker @@ -5485,21 +5485,21 @@ _docker_wait() { _docker_container_wait } +COMPOSE_PLUGIN_PATH=$(docker info --format '{{json .ClientInfo.Plugins}}' | sed -n 's/.*"Path":"\([^"]\+docker-compose\)".*/\1/p') + _docker_compose() { - local composePluginPath="${HOME}/.docker/cli-plugins/docker-compose" local completionCommand="__completeNoDesc" - local resultArray=(${composePluginPath} ${completionCommand} compose) - for value in "${words[@]:2}" - do - if [[ "${value}" == "" ]] ; then + local resultArray=($COMPOSE_PLUGIN_PATH $completionCommand compose) + for value in "${words[@]:2}"; do + if [ -z "$value" ]; then resultArray+=( "''" ) else - resultArray+=( "${value}" ) + resultArray+=( "$value" ) fi done - local result=$(eval "${resultArray[*]}" 2> /dev/null) + local result=$(eval "${resultArray[*]}" 2> /dev/null | grep -v '^:[0-9]*$') - COMPREPLY=( $(compgen -W "${result%%:*}" -- "$current") ) + COMPREPLY=( $(compgen -W "${result}" -- "$current") ) } _docker() { @@ -5571,9 +5571,11 @@ _docker() { wait ) - local known_plugin_commands=( - compose - ) + local known_plugin_commands=() + + if [ -f "$COMPOSE_PLUGIN_PATH" ] ; then + known_plugin_commands+=("compose") + fi local experimental_server_commands=( checkpoint From c2dcaecf19c7843fd7ab37e8321e8816f3400bf2 Mon Sep 17 00:00:00 2001 From: Vardan Pogosian Date: Sun, 9 Jan 2022 12:15:00 +0300 Subject: [PATCH 3/3] make compose plugin detection in bash completion work on Mac OS Signed-off-by: Vardan Pogosian (cherry picked from commit 77b1031be9e62e7781472e7241c96777d4f96ebf) Signed-off-by: Sebastiaan van Stijn --- contrib/completion/bash/docker | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/contrib/completion/bash/docker b/contrib/completion/bash/docker index 5a2052c83559..0478f867ef7b 100644 --- a/contrib/completion/bash/docker +++ b/contrib/completion/bash/docker @@ -5485,7 +5485,7 @@ _docker_wait() { _docker_container_wait } -COMPOSE_PLUGIN_PATH=$(docker info --format '{{json .ClientInfo.Plugins}}' | sed -n 's/.*"Path":"\([^"]\+docker-compose\)".*/\1/p') +COMPOSE_PLUGIN_PATH=$(docker info --format '{{range .ClientInfo.Plugins}}{{if eq .Name "compose"}}{{.Path}}{{end}}{{end}}') _docker_compose() { local completionCommand="__completeNoDesc"