From f2332481a72ac432554147880b3b226d5d07bd53 Mon Sep 17 00:00:00 2001 From: Harald Albers Date: Tue, 27 Jun 2017 16:37:41 +0200 Subject: [PATCH 01/11] Add bash completion for `system prune --volumes` Signed-off-by: Harald Albers (cherry picked from commit 36b572dfdf6bc7b2519f494afe93130e3a8718b5) Signed-off-by: Sebastiaan van Stijn --- components/cli/contrib/completion/bash/docker | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/components/cli/contrib/completion/bash/docker b/components/cli/contrib/completion/bash/docker index cc95639b709..74e8144c06f 100644 --- a/components/cli/contrib/completion/bash/docker +++ b/components/cli/contrib/completion/bash/docker @@ -4375,7 +4375,7 @@ _docker_system_prune() { case "$cur" in -*) - COMPREPLY=( $( compgen -W "--all -a --force -f --filter --help" -- "$cur" ) ) + COMPREPLY=( $( compgen -W "--all -a --force -f --filter --help --volumes" -- "$cur" ) ) ;; esac } From 15acd33ef6b646fa4bd48d19c8a4e7534e49fbd3 Mon Sep 17 00:00:00 2001 From: Harald Albers Date: Mon, 3 Jul 2017 10:38:00 +0200 Subject: [PATCH 02/11] Add bash completion for `build --iidfile` This adds bash completion for https://github.com/moby/moby/pull/32406. Signed-off-by: Harald Albers (cherry picked from commit 1f8720717d58597cb4474e70fa6d534db132229b) Signed-off-by: Sebastiaan van Stijn --- components/cli/contrib/completion/bash/docker | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/components/cli/contrib/completion/bash/docker b/components/cli/contrib/completion/bash/docker index 74e8144c06f..8d108e60020 100644 --- a/components/cli/contrib/completion/bash/docker +++ b/components/cli/contrib/completion/bash/docker @@ -2221,6 +2221,7 @@ _docker_image_build() { --cpu-period --cpu-quota --file -f + --iidfile --label --memory -m --memory-swap @@ -2265,7 +2266,7 @@ _docker_image_build() { __docker_complete_image_repos_and_tags return ;; - --file|-f) + --file|-f|--iidfile) _filedir return ;; From b7693dda2db300ab273166c239b30dbfdb36a821 Mon Sep 17 00:00:00 2001 From: Harald Albers Date: Mon, 3 Jul 2017 11:04:26 +0200 Subject: [PATCH 03/11] Add bash completion for awslogs multiline log driver options This adds bash completion for https://github.com/moby/moby/pull/30891. Signed-off-by: Harald Albers (cherry picked from commit 1d21a3dd7c4ffff80c093c005b910a131e7fc05a) Signed-off-by: Sebastiaan van Stijn --- components/cli/contrib/completion/bash/docker | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/components/cli/contrib/completion/bash/docker b/components/cli/contrib/completion/bash/docker index 8d108e60020..c5434c20e68 100644 --- a/components/cli/contrib/completion/bash/docker +++ b/components/cli/contrib/completion/bash/docker @@ -754,7 +754,7 @@ __docker_complete_log_options() { local common_options2="env env-regex labels" # awslogs does not implement the $common_options2. - local awslogs_options="$common_options1 awslogs-create-group awslogs-group awslogs-region awslogs-stream tag" + local awslogs_options="$common_options1 awslogs-create-group awslogs-datetime-format awslogs-group awslogs-multiline-pattern awslogs-region awslogs-stream tag" local fluentd_options="$common_options1 $common_options2 fluentd-address fluentd-async-connect fluentd-buffer-limit fluentd-retry-wait fluentd-max-retries tag" local gcplogs_options="$common_options1 $common_options2 gcp-log-cmd gcp-meta-id gcp-meta-name gcp-meta-zone gcp-project" From 1828a8bff1d4f55be2abc0c322152b3ebda5f358 Mon Sep 17 00:00:00 2001 From: Harald Albers Date: Mon, 3 Jul 2017 11:30:24 +0200 Subject: [PATCH 04/11] Add metric plugins to bash completion for `plugin ls --filter capability` This adds bash completion for https://github.com/moby/moby/pull/32874. Signed-off-by: Harald Albers (cherry picked from commit 2caf425f02363a5894b5790dcde47a11808d23e1) Signed-off-by: Sebastiaan van Stijn --- components/cli/contrib/completion/bash/docker | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/components/cli/contrib/completion/bash/docker b/components/cli/contrib/completion/bash/docker index c5434c20e68..3e2acb1253e 100644 --- a/components/cli/contrib/completion/bash/docker +++ b/components/cli/contrib/completion/bash/docker @@ -3771,7 +3771,7 @@ _docker_plugin_ls() { local key=$(__docker_map_key_of_current_option '--filter|-f') case "$key" in capability) - COMPREPLY=( $( compgen -W "authz ipamdriver networkdriver volumedriver" -- "${cur##*=}" ) ) + COMPREPLY=( $( compgen -W "authz ipamdriver logdriver metricscollector networkdriver volumedriver" -- "${cur##*=}" ) ) return ;; enabled) From 1c82e267a72166e62edb4a67b7198b51906a5e37 Mon Sep 17 00:00:00 2001 From: Harald Albers Date: Mon, 3 Jul 2017 16:49:25 +0200 Subject: [PATCH 05/11] Add bash completion for `docker config` command family This adds bash completion for - https://github.com/docker/cli/pull/45 - https://github.com/moby/moby/pull/32336 Signed-off-by: Harald Albers (cherry picked from commit c40952b3058db3c6e44bca8c518d888b83878ce5) Signed-off-by: Sebastiaan van Stijn --- components/cli/contrib/completion/bash/docker | 160 ++++++++++++++++++ 1 file changed, 160 insertions(+) diff --git a/components/cli/contrib/completion/bash/docker b/components/cli/contrib/completion/bash/docker index 3e2acb1253e..8cf9be373f2 100644 --- a/components/cli/contrib/completion/bash/docker +++ b/components/cli/contrib/completion/bash/docker @@ -20,6 +20,7 @@ # For several commands, the amount of completions can be configured by # setting environment variables. # +# DOCKER_COMPLETION_SHOW_CONFIG_IDS # DOCKER_COMPLETION_SHOW_CONTAINER_IDS # DOCKER_COMPLETION_SHOW_NETWORK_IDS # DOCKER_COMPLETION_SHOW_NODE_IDS @@ -61,6 +62,42 @@ __docker_q() { docker ${host:+-H "$host"} ${config:+--config "$config"} 2>/dev/null "$@" } +# __docker_configs returns a list of configs. Additional options to +# `docker config ls` may be specified in order to filter the list, e.g. +# `__docker_configs --filter label=stage=production`. +# By default, only names are returned. +# Set DOCKER_COMPLETION_SHOW_CONFIG_IDS=yes to also complete IDs. +# An optional first option `--id|--name` may be used to limit the +# output to the IDs or names of matching items. This setting takes +# precedence over the environment setting. +__docker_configs() { + local format + if [ "$1" = "--id" ] ; then + format='{{.ID}}' + shift + elif [ "$1" = "--name" ] ; then + format='{{.Name}}' + shift + elif [ "$DOCKER_COMPLETION_SHOW_CONFIG_IDS" = yes ] ; then + format='{{.ID}} {{.Name}}' + else + format='{{.Name}}' + fi + + __docker_q config ls --format "$format" "$@" +} + +# __docker_complete_configs applies completion of configs based on the current value +# of `$cur` or the value of the optional first option `--cur`, if given. +__docker_complete_configs() { + local current="$cur" + if [ "$1" = "--cur" ] ; then + current="$2" + shift 2 + fi + COMPREPLY=( $(compgen -W "$(__docker_configs "$@")" -- "$current") ) +} + # __docker_containers returns a list of containers. Additional options to # `docker ps` may be specified in order to filter the list, e.g. # `__docker_containers --filter status=running` @@ -1074,6 +1111,117 @@ _docker_checkpoint_rm() { } +_docker_config() { + local subcommands=" + create + inspect + ls + rm + " + local aliases=" + list + remove + " + __docker_subcommands "$subcommands $aliases" && return + + case "$cur" in + -*) + COMPREPLY=( $( compgen -W "--help" -- "$cur" ) ) + ;; + *) + COMPREPLY=( $( compgen -W "$subcommands" -- "$cur" ) ) + ;; + esac +} + +_docker_config_create() { + case "$prev" in + --label|-l) + return + ;; + esac + + case "$cur" in + -*) + COMPREPLY=( $( compgen -W "--help --label -l" -- "$cur" ) ) + ;; + *) + local counter=$(__docker_pos_first_nonflag '--label|-l') + if [ $cword -eq $((counter + 1)) ]; then + _filedir + fi + ;; + esac +} + +_docker_config_inspect() { + case "$prev" in + --format|-f) + return + ;; + esac + + case "$cur" in + -*) + COMPREPLY=( $( compgen -W "--format -f --help --pretty" -- "$cur" ) ) + ;; + *) + __docker_complete_configs + ;; + esac +} + +_docker_config_list() { + _docker_config_ls +} + +_docker_config_ls() { + local key=$(__docker_map_key_of_current_option '--filter|-f') + case "$key" in + id) + __docker_complete_configs --cur "${cur##*=}" --id + return + ;; + name) + __docker_complete_configs --cur "${cur##*=}" --name + return + ;; + esac + + case "$prev" in + --filter|-f) + COMPREPLY=( $( compgen -S = -W "id label name" -- "$cur" ) ) + __docker_nospace + return + ;; + --format) + return + ;; + esac + + case "$cur" in + -*) + COMPREPLY=( $( compgen -W "--format --filter -f --help --quiet -q" -- "$cur" ) ) + ;; + esac +} + +_docker_config_remove() { + _docker_config_rm +} + +_docker_config_rm() { + case "$cur" in + -*) + COMPREPLY=( $( compgen -W "--help" -- "$cur" ) ) + ;; + *) + __docker_complete_configs + ;; + esac +} + + _docker_container() { local subcommands=" attach @@ -3101,6 +3249,7 @@ _docker_service_update_and_create() { if [ "$subcommand" = "create" ] ; then options_with_args="$options_with_args + --config --constraint --container-label --dns @@ -3118,6 +3267,10 @@ _docker_service_update_and_create() { " case "$prev" in + --config) + __docker_complete_configs + return + ;; --env-file) _filedir return @@ -3152,6 +3305,8 @@ _docker_service_update_and_create() { if [ "$subcommand" = "update" ] ; then options_with_args="$options_with_args --args + --config-add + --config-rm --constraint-add --constraint-rm --container-label-add @@ -3179,6 +3334,10 @@ _docker_service_update_and_create() { " case "$prev" in + --config-add|--config-rm) + __docker_complete_configs + return + ;; --group-add|--group-rm) COMPREPLY=( $(compgen -g -- "$cur") ) return @@ -4550,6 +4709,7 @@ _docker() { shopt -s extglob local management_commands=( + config container image network From 02a80c5c3c4bfca475dde14fac6cbc32b24bacd7 Mon Sep 17 00:00:00 2001 From: Harald Albers Date: Mon, 3 Jul 2017 16:55:16 +0200 Subject: [PATCH 06/11] Add bash completion for `secret inspect --pretty` Signed-off-by: Harald Albers (cherry picked from commit 211bd55ae736705a48908833a5e10491f613e255) Signed-off-by: Sebastiaan van Stijn --- components/cli/contrib/completion/bash/docker | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/components/cli/contrib/completion/bash/docker b/components/cli/contrib/completion/bash/docker index 8cf9be373f2..f82209ea079 100644 --- a/components/cli/contrib/completion/bash/docker +++ b/components/cli/contrib/completion/bash/docker @@ -4107,7 +4107,7 @@ _docker_secret_inspect() { case "$cur" in -*) - COMPREPLY=( $( compgen -W "--format -f --help" -- "$cur" ) ) + COMPREPLY=( $( compgen -W "--format -f --help --pretty" -- "$cur" ) ) ;; *) __docker_complete_secrets From caf69432115b2f0460aa8f27db988f8c5122c513 Mon Sep 17 00:00:00 2001 From: Harald Albers Date: Mon, 3 Jul 2017 16:55:40 +0200 Subject: [PATCH 07/11] Refactor alias delegation in bash completion for `secret rm|remove` The completion logic should be implemented in the documented subcommands (ls, rm) and delegated to from the aliases (list, remove). For the rm|remove pair, this was implemented vice versa. Signed-off-by: Harald Albers (cherry picked from commit d585e554d5e3a16f424cb3d92d0f7be342b8c7ca) Signed-off-by: Sebastiaan van Stijn --- components/cli/contrib/completion/bash/docker | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/components/cli/contrib/completion/bash/docker b/components/cli/contrib/completion/bash/docker index f82209ea079..d1fad7ad7c4 100644 --- a/components/cli/contrib/completion/bash/docker +++ b/components/cli/contrib/completion/bash/docker @@ -4151,6 +4151,10 @@ _docker_secret_ls() { } _docker_secret_remove() { + _docker_secret_rm +} + +_docker_secret_rm() { case "$cur" in -*) COMPREPLY=( $( compgen -W "--help" -- "$cur" ) ) @@ -4161,10 +4165,6 @@ _docker_secret_remove() { esac } -_docker_secret_rm() { - _docker_secret_remove -} - _docker_search() { From 7fd4d9d5aabaa15d6bfed1881577a238f44605e4 Mon Sep 17 00:00:00 2001 From: Harald Albers Date: Mon, 3 Jul 2017 17:33:03 +0200 Subject: [PATCH 08/11] Improve bash completion for `service create|update --detach` bash completion usually completes boolean options that default to `true` with the `=false` suffix because that is the only syntax that really changes behavior. For this option, I implemented completion falsely. Signed-off-by: Harald Albers (cherry picked from commit fc0dafbbd11130ac24f8905f697b71e99f32d4e6) Signed-off-by: Sebastiaan van Stijn --- components/cli/contrib/completion/bash/docker | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/components/cli/contrib/completion/bash/docker b/components/cli/contrib/completion/bash/docker index d1fad7ad7c4..b90abfd194a 100644 --- a/components/cli/contrib/completion/bash/docker +++ b/components/cli/contrib/completion/bash/docker @@ -3237,7 +3237,7 @@ _docker_service_update_and_create() { " local boolean_options=" - --detach -d + --detach=false -d=false --help --no-healthcheck --read-only From 26ace597a5e9687c98b9fbe6973c1091592bde07 Mon Sep 17 00:00:00 2001 From: Jean-Pierre Huynh Date: Thu, 20 Jul 2017 23:13:04 +0100 Subject: [PATCH 09/11] Add zsh completion for `system prune --volumes` Signed-off-by: Jean-Pierre Huynh (cherry picked from commit 6b256484ae3cb4da78e6ddad75b8aaf552b9ae60) Signed-off-by: Sebastiaan van Stijn --- components/cli/contrib/completion/zsh/_docker | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/components/cli/contrib/completion/zsh/_docker b/components/cli/contrib/completion/zsh/_docker index 4b0c1e25c70..3ffd8524104 100644 --- a/components/cli/contrib/completion/zsh/_docker +++ b/components/cli/contrib/completion/zsh/_docker @@ -2376,7 +2376,8 @@ __docker_system_subcommand() { $opts_help \ "($help -a --all)"{-a,--all}"[Remove all unused data, not just dangling ones]" \ "($help)*--filter=[Filter values]:filter:__docker_complete_prune_filters" \ - "($help -f --force)"{-f,--force}"[Do not prompt for confirmation]" && ret=0 + "($help -f --force)"{-f,--force}"[Do not prompt for confirmation]" \ + "($help)--volumes=[Remove all unused volumes]" && ret=0 ;; (help) _arguments $(__docker_arguments) ":subcommand:__docker_volume_commands" && ret=0 From 7ee46d779ca83e13681b6395ea2437f45e538db5 Mon Sep 17 00:00:00 2001 From: Jean-Pierre Huynh Date: Thu, 20 Jul 2017 23:41:47 +0100 Subject: [PATCH 10/11] Update __docker_get_log_options completion Signed-off-by: Jean-Pierre Huynh (cherry picked from commit d7ade64d29965a686ce7933865d273e84f1ccce1) Signed-off-by: Sebastiaan van Stijn --- components/cli/contrib/completion/zsh/_docker | 21 ++++++++++--------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/components/cli/contrib/completion/zsh/_docker b/components/cli/contrib/completion/zsh/_docker index 3ffd8524104..2c401394d3d 100644 --- a/components/cli/contrib/completion/zsh/_docker +++ b/components/cli/contrib/completion/zsh/_docker @@ -221,18 +221,19 @@ __docker_get_log_options() { integer ret=1 local log_driver=${opt_args[--log-driver]:-"all"} - local -a common_options awslogs_options fluentd_options gelf_options journald_options json_file_options logentries_options syslog_options splunk_options + local -a common_options common_options2 awslogs_options fluentd_options gelf_options journald_options json_file_options logentries_options syslog_options splunk_options common_options=("max-buffer-size" "mode") - awslogs_options=($common_options "awslogs-region" "awslogs-group" "awslogs-stream" "awslogs-create-group") - fluentd_options=($common_options "env" "fluentd-address" "fluentd-async-connect" "fluentd-buffer-limit" "fluentd-retry-wait" "fluentd-max-retries" "labels" "tag") - gcplogs_options=($common_options "env" "gcp-log-cmd" "gcp-project" "labels") - gelf_options=($common_options "env" "gelf-address" "gelf-compression-level" "gelf-compression-type" "labels" "tag") - journald_options=($common_options "env" "labels" "tag") - json_file_options=($common_options "env" "labels" "max-file" "max-size") - logentries_options=($common_options "logentries-token") - syslog_options=($common_options "env" "labels" "syslog-address" "syslog-facility" "syslog-format" "syslog-tls-ca-cert" "syslog-tls-cert" "syslog-tls-key" "syslog-tls-skip-verify" "tag") - splunk_options=($common_options "env" "labels" "splunk-caname" "splunk-capath" "splunk-format" "splunk-gzip" "splunk-gzip-level" "splunk-index" "splunk-insecureskipverify" "splunk-source" "splunk-sourcetype" "splunk-token" "splunk-url" "splunk-verify-connection" "tag") + common_options2=("env" "env-regex" "labels") + awslogs_options=($common_options "awslogs-create-group" "awslogs-datetime-format" "awslogs-group" "awslogs-multiline-pattern" "awslogs-region" "awslogs-stream" "tag") + fluentd_options=($common_options $common_options2 "fluentd-address" "fluentd-async-connect" "fluentd-buffer-limit" "fluentd-retry-wait" "fluentd-max-retries" "tag") + gcplogs_options=($common_options $common_options2 "gcp-log-cmd" "gcp-meta-id" "gcp-meta-name" "gcp-meta-zone" "gcp-project") + gelf_options=($common_options $common_options2 "gelf-address" "gelf-compression-level" "gelf-compression-type" "tag") + journald_options=($common_options $common_options2 "tag") + json_file_options=($common_options $common_options2 "max-file" "max-size") + logentries_options=($common_options $common_options2 "logentries-token" "tag") + syslog_options=($common_options $common_options2 "syslog-address" "syslog-facility" "syslog-format" "syslog-tls-ca-cert" "syslog-tls-cert" "syslog-tls-key" "syslog-tls-skip-verify" "tag") + splunk_options=($common_options $common_options2 "splunk-caname" "splunk-capath" "splunk-format" "splunk-gzip" "splunk-gzip-level" "splunk-index" "splunk-insecureskipverify" "splunk-source" "splunk-sourcetype" "splunk-token" "splunk-url" "splunk-verify-connection" "tag") [[ $log_driver = (awslogs|all) ]] && _describe -t awslogs-options "awslogs options" awslogs_options "$@" && ret=0 [[ $log_driver = (fluentd|all) ]] && _describe -t fluentd-options "fluentd options" fluentd_options "$@" && ret=0 From 114d979f770417f826cf73c4f2d212c6adb3c5f2 Mon Sep 17 00:00:00 2001 From: Jean-Pierre Huynh Date: Fri, 21 Jul 2017 09:53:43 +0100 Subject: [PATCH 11/11] Remove duplicate publish option in docker service create/update completion Signed-off-by: Jean-Pierre Huynh (cherry picked from commit 6c65ba6c0836ed14501cb40ad2d82cdde6fd168d) Signed-off-by: Sebastiaan van Stijn --- components/cli/contrib/completion/zsh/_docker | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/components/cli/contrib/completion/zsh/_docker b/components/cli/contrib/completion/zsh/_docker index 2c401394d3d..7a8c98e71de 100644 --- a/components/cli/contrib/completion/zsh/_docker +++ b/components/cli/contrib/completion/zsh/_docker @@ -1961,7 +1961,6 @@ __docker_service_subcommand() { "($help)*--mount=[Attach a filesystem mount to the service]:mount: " "($help)*--network=[Network attachments]:network: " "($help)--no-healthcheck[Disable any container-specified HEALTHCHECK]" - "($help)*"{-p=,--publish=}"[Publish a port as a node port]:port: " "($help)--read-only[Mount the container's root filesystem as read only]" "($help)--replicas=[Number of tasks]:replicas: " "($help)--reserve-cpu=[Reserve CPUs]:value: " @@ -2002,7 +2001,7 @@ __docker_service_subcommand() { "($help)--mode=[Service Mode]:mode:(global replicated)" \ "($help)--name=[Service name]:name: " \ "($help)*--placement-pref=[Add a placement preference]:pref:__docker_service_complete_placement_pref" \ - "($help)*--publish=[Publish a port]:port: " \ + "($help)*"{-p=,--publish=}"[Publish a port as a node port]:port: " \ "($help -): :__docker_complete_images" \ "($help -):command: _command_names -e" \ "($help -)*::arguments: _normal" && ret=0