From 6de8dd1a6e37ea6ef04d779c6348452c1a3c2370 Mon Sep 17 00:00:00 2001 From: Harald Albers Date: Thu, 23 Jul 2015 13:52:06 +0200 Subject: [PATCH 1/2] Fix problem with = in completion of docker global options Without this fix, `docker --log-driver fluentd --log-opt fluentd-tag=b` would complete `b` to `build`. Completion of the commands has to be nailed to __docker_pos_first_nonflag Signed-off-by: Harald Albers --- contrib/completion/bash/docker | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/contrib/completion/bash/docker b/contrib/completion/bash/docker index 85959f4e77..5097cca4ce 100755 --- a/contrib/completion/bash/docker +++ b/contrib/completion/bash/docker @@ -359,7 +359,10 @@ _docker_docker() { COMPREPLY=( $( compgen -W "$boolean_options $main_options_with_args" -- "$cur" ) ) ;; *) - COMPREPLY=( $( compgen -W "${commands[*]} help" -- "$cur" ) ) + local counter="$(__docker_pos_first_nonflag $main_options_with_args_glob)" + if [ $cword -eq $counter ]; then + COMPREPLY=( $( compgen -W "${commands[*]} help" -- "$cur" ) ) + fi ;; esac } From de40f3997a7aae94e925d8f694e2161b1b1b92bb Mon Sep 17 00:00:00 2001 From: Harald Albers Date: Thu, 23 Jul 2015 14:19:13 +0200 Subject: [PATCH 2/2] Complete all known driver options if no log driver was specified Without this fix, `docker --log-opt ` would not complete anything because the completions were driver specific. Signed-off-by: Harald Albers --- contrib/completion/bash/docker | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/contrib/completion/bash/docker b/contrib/completion/bash/docker index 5097cca4ce..273d9b7019 100755 --- a/contrib/completion/bash/docker +++ b/contrib/completion/bash/docker @@ -227,15 +227,22 @@ __docker_log_drivers() { __docker_log_driver_options() { # see docs/reference/logging/index.md + local fluentd_options="fluentd-address fluentd-tag" + local gelf_options="gelf-address gelf-tag" + local syslog_options="syslog-address syslog-facility syslog-tag" + case $(__docker_value_of_option --log-driver) in + '') + COMPREPLY=( $( compgen -W "$fluentd_options $gelf_options $syslog_options" -S = -- "$cur" ) ) + ;; fluentd) - COMPREPLY=( $( compgen -W "fluentd-address fluentd-tag" -S = -- "$cur" ) ) + COMPREPLY=( $( compgen -W "$fluentd_options" -S = -- "$cur" ) ) ;; gelf) - COMPREPLY=( $( compgen -W "gelf-address gelf-tag" -S = -- "$cur" ) ) + COMPREPLY=( $( compgen -W "$gelf_options" -S = -- "$cur" ) ) ;; syslog) - COMPREPLY=( $( compgen -W "syslog-address syslog-facility syslog-tag" -S = -- "$cur" ) ) + COMPREPLY=( $( compgen -W "$syslog_options" -S = -- "$cur" ) ) ;; *) return