From ad37aac45bcc28dc553d0754c92e83885e85fa11 Mon Sep 17 00:00:00 2001 From: Steve Durrheimer Date: Fri, 25 Mar 2016 18:26:32 +0100 Subject: [PATCH 01/18] Add zsh completion for new fluentd log driver options Signed-off-by: Steve Durrheimer (cherry picked from commit 396ffa2faf4b16bf6d6dbd813e967038bb2b4034) Signed-off-by: Sebastiaan van Stijn --- contrib/completion/zsh/_docker | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/contrib/completion/zsh/_docker b/contrib/completion/zsh/_docker index 8811261f22..a617dbdd6b 100644 --- a/contrib/completion/zsh/_docker +++ b/contrib/completion/zsh/_docker @@ -200,7 +200,7 @@ __docker_get_log_options() { local -a awslogs_options fluentd_options gelf_options journald_options json_file_options syslog_options splunk_options awslogs_options=("awslogs-region" "awslogs-group" "awslogs-stream") - fluentd_options=("env" "fluentd-address" "labels" "tag") + fluentd_options=("env" "fluentd-address" "fluentd-async-connect" "fluentd-buffer-limit" "fluentd-retry-wait" "fluentd-max-retries" "labels" "tag") gcplogs_options=("env" "gcp-log-cmd" "gcp-project" "labels") gelf_options=("env" "gelf-address" "labels" "tag") journald_options=("env" "labels") From cf1d012fdadd33b6aea8c4fbbf605e266c3e3731 Mon Sep 17 00:00:00 2001 From: Steve Durrheimer Date: Fri, 25 Mar 2016 18:36:45 +0100 Subject: [PATCH 02/18] Add zsh completion for 'docker load -q --quiet' Signed-off-by: Steve Durrheimer (cherry picked from commit f8009d10bba6bb179466456bf5564883d5b7deac) Signed-off-by: Sebastiaan van Stijn --- contrib/completion/zsh/_docker | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/contrib/completion/zsh/_docker b/contrib/completion/zsh/_docker index a617dbdd6b..688fb491d0 100644 --- a/contrib/completion/zsh/_docker +++ b/contrib/completion/zsh/_docker @@ -810,7 +810,8 @@ __docker_subcommand() { (load) _arguments $(__docker_arguments) \ $opts_help \ - "($help -i --input)"{-i=,--input=}"[Read from tar archive file]:archive file:_files -g "*.((tar|TAR)(.gz|.GZ|.Z|.bz2|.lzma|.xz|)|(tbz|tgz|txz))(-.)"" && ret=0 + "($help -i --input)"{-i=,--input=}"[Read from tar archive file]:archive file:_files -g \"*.((tar|TAR)(.gz|.GZ|.Z|.bz2|.lzma|.xz|)|(tbz|tgz|txz))(-.)\"" \ + "($help -q --quiet)"{-q,--quiet}"[Suppress the load output]" && ret=0 ;; (login) _arguments $(__docker_arguments) \ From 501b0c387d12518744f8f9ee46595bee637e2d11 Mon Sep 17 00:00:00 2001 From: Harald Albers Date: Fri, 25 Mar 2016 10:56:04 -0700 Subject: [PATCH 03/18] bash completion for labels on build, networks and volumes Signed-off-by: Harald Albers (cherry picked from commit a2958aa18f148ce2672b2f0c237c288d3f200add) Signed-off-by: Sebastiaan van Stijn --- contrib/completion/bash/docker | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/contrib/completion/bash/docker b/contrib/completion/bash/docker index 76da887521..ad311dd1ec 100644 --- a/contrib/completion/bash/docker +++ b/contrib/completion/bash/docker @@ -637,6 +637,7 @@ _docker_build() { --cpu-quota --file -f --isolation + --label --memory -m --memory-swap --shm-size @@ -1324,11 +1325,14 @@ _docker_network_create() { COMPREPLY=( $(compgen -W "$plugins" -- "$cur") ) return ;; + --label) + return + ;; esac case "$cur" in -*) - COMPREPLY=( $( compgen -W "--aux-address --driver -d --gateway --help --internal --ip-range --ipam-driver --ipam-opt --ipv6 --opt -o --subnet" -- "$cur" ) ) + COMPREPLY=( $( compgen -W "--aux-address --driver -d --gateway --help --internal --ip-range --ipam-driver --ipam-opt --ipv6 --label --opt -o --subnet" -- "$cur" ) ) ;; esac } @@ -2024,14 +2028,14 @@ _docker_volume_create() { __docker_complete_plugins Volume return ;; - --name|--opt|-o) + --label|--name|--opt|-o) return ;; esac case "$cur" in -*) - COMPREPLY=( $( compgen -W "--driver -d --help --name --opt -o" -- "$cur" ) ) + COMPREPLY=( $( compgen -W "--driver -d --help --label --name --opt -o" -- "$cur" ) ) ;; esac } From 73f7f515be675ca68c6aa3694d1a59cc4f5f32a6 Mon Sep 17 00:00:00 2001 From: Steve Durrheimer Date: Fri, 25 Mar 2016 20:43:43 +0100 Subject: [PATCH 04/18] Add zsh completion for 'docker {build, volume create, network create} --label' Signed-off-by: Steve Durrheimer (cherry picked from commit 5bfd29b9fbc97392d540013a8225671e2f83c407) Signed-off-by: Sebastiaan van Stijn --- contrib/completion/zsh/_docker | 3 +++ 1 file changed, 3 insertions(+) diff --git a/contrib/completion/zsh/_docker b/contrib/completion/zsh/_docker index 688fb491d0..01dd427165 100644 --- a/contrib/completion/zsh/_docker +++ b/contrib/completion/zsh/_docker @@ -335,6 +335,7 @@ __docker_network_subcommand() { "($help)--ipam-driver=[IP Address Management Driver]:driver:(default)" \ "($help)*--ipam-opt=[Custom IPAM plugin options]:opt=value: " \ "($help)--ipv6[Enable IPv6 networking]" \ + "($help)*--label=[Set metadata on a network]:label=value: " \ "($help)*"{-o=,--opt=}"[Driver specific options]:opt=value: " \ "($help)*--subnet=[Subnet in CIDR format that represents a network segment]:IP/mask: " \ "($help -)1:Network Name: " && ret=0 @@ -425,6 +426,7 @@ __docker_volume_subcommand() { _arguments $(__docker_arguments) \ $opts_help \ "($help -d --driver)"{-d=,--driver=}"[Volume driver name]:Driver name:(local)" \ + "($help)*--label=[Set metadata for a volume]:label=value: " \ "($help)--name=[Volume name]" \ "($help)*"{-o=,--opt=}"[Driver specific options]:Driver option: " && ret=0 ;; @@ -576,6 +578,7 @@ __docker_subcommand() { "($help)*--build-arg[Build-time variables]:=: " \ "($help -f --file)"{-f=,--file=}"[Name of the Dockerfile]:Dockerfile:_files" \ "($help)--force-rm[Always remove intermediate containers]" \ + "($help)*--label=[Set metadata for an image]:label=value: " \ "($help)--no-cache[Do not use cache when building the image]" \ "($help)--pull[Attempt to pull a newer version of the image]" \ "($help -q --quiet)"{-q,--quiet}"[Suppress verbose build output]" \ From e23f622d38c926157039844575118002592c5197 Mon Sep 17 00:00:00 2001 From: Steve Durrheimer Date: Sat, 26 Mar 2016 14:54:11 +0100 Subject: [PATCH 05/18] Add zsh completion for journald tag opt Signed-off-by: Steve Durrheimer (cherry picked from commit 93ffc2d9544742f1c78043fd449fe7e7ef59bbf3) Signed-off-by: Sebastiaan van Stijn --- contrib/completion/zsh/_docker | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/contrib/completion/zsh/_docker b/contrib/completion/zsh/_docker index 01dd427165..9b95c5cd96 100644 --- a/contrib/completion/zsh/_docker +++ b/contrib/completion/zsh/_docker @@ -203,7 +203,7 @@ __docker_get_log_options() { fluentd_options=("env" "fluentd-address" "fluentd-async-connect" "fluentd-buffer-limit" "fluentd-retry-wait" "fluentd-max-retries" "labels" "tag") gcplogs_options=("env" "gcp-log-cmd" "gcp-project" "labels") gelf_options=("env" "gelf-address" "labels" "tag") - journald_options=("env" "labels") + journald_options=("env" "labels" "tag") json_file_options=("env" "labels" "max-file" "max-size") syslog_options=("syslog-address" "syslog-tls-ca-cert" "syslog-tls-cert" "syslog-tls-key" "syslog-tls-skip-verify" "syslog-facility" "tag") splunk_options=("env" "labels" "splunk-caname" "splunk-capath" "splunk-index" "splunk-insecureskipverify" "splunk-source" "splunk-sourcetype" "splunk-token" "splunk-url" "tag") From 08d09e7733cd028c62325cb9d3354f4a60d81836 Mon Sep 17 00:00:00 2001 From: Steve Durrheimer Date: Sat, 26 Mar 2016 15:07:02 +0100 Subject: [PATCH 06/18] Add zsh completion for 'docker update --restart' Signed-off-by: Steve Durrheimer (cherry picked from commit ca2cca025579c92aaab0a27b6740c72f88788b1d) Signed-off-by: Sebastiaan van Stijn --- contrib/completion/zsh/_docker | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/contrib/completion/zsh/_docker b/contrib/completion/zsh/_docker index 9b95c5cd96..9b026b8183 100644 --- a/contrib/completion/zsh/_docker +++ b/contrib/completion/zsh/_docker @@ -542,7 +542,6 @@ __docker_subcommand() { "($help)--pid=[PID namespace to use]:PID: " "($help)--privileged[Give extended privileges to this container]" "($help)--read-only[Mount the container's root filesystem as read only]" - "($help)--restart=[Restart policy]:restart policy:(no on-failure always unless-stopped)" "($help)*--security-opt=[Security options]:security option: " "($help -t --tty)"{-t,--tty}"[Allocate a pseudo-tty]" "($help -u --user)"{-u=,--user=}"[Username or UID]:user:_users" @@ -556,6 +555,7 @@ __docker_subcommand() { "($help)--blkio-weight=[Block IO (relative weight), between 10 and 1000]:Block IO weight:(10 100 500 1000)" "($help)--kernel-memory=[Kernel memory limit in bytes]:Memory limit: " "($help)--memory-reservation=[Memory soft limit]:Memory limit: " + "($help)--restart=[Restart policy]:restart policy:(no on-failure always unless-stopped)" ) opts_attach_exec_run_start=( "($help)--detach-keys=[Escape key sequence used to detach a container]:sequence:__docker_complete_detach_keys" From abe8c11e363aaff983dded31ea994d3edea1110a Mon Sep 17 00:00:00 2001 From: Steve Durrheimer Date: Sat, 26 Mar 2016 21:53:27 +0100 Subject: [PATCH 07/18] Add zsh completion for 'docker ps --filter' values Signed-off-by: Steve Durrheimer (cherry picked from commit f3a27a6fac8d32a2930821a83bcceb750ff8070a) Signed-off-by: Sebastiaan van Stijn --- contrib/completion/zsh/_docker | 128 +++++++++++++++++++++++---------- 1 file changed, 91 insertions(+), 37 deletions(-) diff --git a/contrib/completion/zsh/_docker b/contrib/completion/zsh/_docker index 9b026b8183..e472a8bdc3 100644 --- a/contrib/completion/zsh/_docker +++ b/contrib/completion/zsh/_docker @@ -50,11 +50,11 @@ __docker_arguments() { __docker_get_containers() { [[ $PREFIX = -* ]] && return 1 integer ret=1 - local kind - declare -a running stopped lines args + local kind type line s + declare -a running stopped lines args names - kind=$1 - shift + kind=$1; shift + type=$1; shift [[ $kind = (stopped|all) ]] && args=($args -a) lines=(${(f)"$(_call_program commands docker $docker_options ps --no-trunc $args)"}) @@ -73,39 +73,40 @@ __docker_get_containers() { lines=(${lines[2,-1]}) # Container ID - local line - local s - for line in $lines; do - s="${${line[${begin[CONTAINER ID]},${end[CONTAINER ID]}]%% ##}[0,12]}" - s="$s:${(l:15:: :::)${${line[${begin[CREATED]},${end[CREATED]}]/ ago/}%% ##}}" - s="$s, ${${${line[${begin[IMAGE]},${end[IMAGE]}]}/:/\\:}%% ##}" - if [[ ${line[${begin[STATUS]},${end[STATUS]}]} = Exit* ]]; then - stopped=($stopped $s) - else - running=($running $s) - fi - done + if [[ $type = (ids|all) ]]; then + for line in $lines; do + s="${${line[${begin[CONTAINER ID]},${end[CONTAINER ID]}]%% ##}[0,12]}" + s="$s:${(l:15:: :::)${${line[${begin[CREATED]},${end[CREATED]}]/ ago/}%% ##}}" + s="$s, ${${${line[${begin[IMAGE]},${end[IMAGE]}]}/:/\\:}%% ##}" + if [[ ${line[${begin[STATUS]},${end[STATUS]}]} = Exit* ]]; then + stopped=($stopped $s) + else + running=($running $s) + fi + done + fi # Names: we only display the one without slash. All other names # are generated and may clutter the completion. However, with # Swarm, all names may be prefixed by the swarm node name. - local -a names - for line in $lines; do - names=(${(ps:,:)${${line[${begin[NAMES]},${end[NAMES]}]}%% *}}) - # First step: find a common prefix and strip it (swarm node case) - (( ${#${(u)names%%/*}} == 1 )) && names=${names#${names[1]%%/*}/} - # Second step: only keep the first name without a / - s=${${names:#*/*}[1]} - # If no name, well give up. - (( $#s != 0 )) || continue - s="$s:${(l:15:: :::)${${line[${begin[CREATED]},${end[CREATED]}]/ ago/}%% ##}}" - s="$s, ${${${line[${begin[IMAGE]},${end[IMAGE]}]}/:/\\:}%% ##}" - if [[ ${line[${begin[STATUS]},${end[STATUS]}]} = Exit* ]]; then - stopped=($stopped $s) - else - running=($running $s) - fi - done + if [[ $type = (names|all) ]]; then + for line in $lines; do + names=(${(ps:,:)${${line[${begin[NAMES]},${end[NAMES]}]}%% *}}) + # First step: find a common prefix and strip it (swarm node case) + (( ${#${(u)names%%/*}} == 1 )) && names=${names#${names[1]%%/*}/} + # Second step: only keep the first name without a / + s=${${names:#*/*}[1]} + # If no name, well give up. + (( $#s != 0 )) || continue + s="$s:${(l:15:: :::)${${line[${begin[CREATED]},${end[CREATED]}]/ ago/}%% ##}}" + s="$s, ${${${line[${begin[IMAGE]},${end[IMAGE]}]}/:/\\:}%% ##}" + if [[ ${line[${begin[STATUS]},${end[STATUS]}]} = Exit* ]]; then + stopped=($stopped $s) + else + running=($running $s) + fi + done + fi [[ $kind = (running|all) ]] && _describe -t containers-running "running containers" running "$@" && ret=0 [[ $kind = (stopped|all) ]] && _describe -t containers-stopped "stopped containers" stopped "$@" && ret=0 @@ -114,17 +115,27 @@ __docker_get_containers() { __docker_stoppedcontainers() { [[ $PREFIX = -* ]] && return 1 - __docker_get_containers stopped "$@" + __docker_get_containers stopped all "$@" } __docker_runningcontainers() { [[ $PREFIX = -* ]] && return 1 - __docker_get_containers running "$@" + __docker_get_containers running all "$@" } __docker_containers() { [[ $PREFIX = -* ]] && return 1 - __docker_get_containers all "$@" + __docker_get_containers all all "$@" +} + +__docker_containers_ids() { + [[ $PREFIX = -* ]] && return 1 + __docker_get_containers all ids "$@" +} + +__docker_containers_names() { + [[ $PREFIX = -* ]] && return 1 + __docker_get_containers all names "$@" } __docker_images() { @@ -244,6 +255,43 @@ __docker_complete_detach_keys() { _describe -t detach_keys-ctrl "'ctrl-' + 'a-z @ [ \\\\ ] ^ _'" ctrl_keys -qS "," && ret=0 } +__docker_complete_ps_filters() { + [[ $PREFIX = -* ]] && return 1 + integer ret=1 + + if compset -P '*='; then + case "${${words[-1]%=*}#*=}" in + (ancestor) + __docker_images && ret=0 + ;; + (before|since) + __docker_containers && ret=0 + ;; + (id) + __docker_containers_ids && ret=0 + ;; + (name) + __docker_containers_names && ret=0 + ;; + (status) + status_opts=('created' 'dead' 'exited' 'paused' 'restarting' 'running') + _describe -t status-filter-opts "Status Filter Options" status_opts && ret=0 + ;; + (volume) + __docker_volumes && ret=0 + ;; + *) + _message 'value' && ret=0 + ;; + esac + else + opts=('ancestor' 'before' 'exited' 'id' 'label' 'name' 'since' 'status' 'volume') + _describe -t filter-opts "Filter Options" opts -qS "=" && ret=0 + fi + + return ret +} + __docker_networks() { [[ $PREFIX = -* ]] && return 1 integer ret=1 @@ -870,7 +918,7 @@ __docker_subcommand() { $opts_help \ "($help -a --all)"{-a,--all}"[Show all containers]" \ "($help)--before=[Show only container created before...]:containers:__docker_containers" \ - "($help)*"{-f=,--filter=}"[Filter values]:filter: " \ + "($help)*"{-f=,--filter=}"[Filter values]:filter:->filter-options" \ "($help)--format[Pretty-print containers using a Go template]:format: " \ "($help -l --latest)"{-l,--latest}"[Show only the latest created container]" \ "($help)-n[Show n last created containers, include non-running one]:n:(1 5 10 25 50)" \ @@ -878,6 +926,12 @@ __docker_subcommand() { "($help -q --quiet)"{-q,--quiet}"[Only show numeric IDs]" \ "($help -s --size)"{-s,--size}"[Display total file sizes]" \ "($help)--since=[Show only containers created since...]:containers:__docker_containers" && ret=0 + + case $state in + (filter-options) + __docker_complete_ps_filters && ret=0 + ;; + esac ;; (pull) _arguments $(__docker_arguments) \ From 197d61d01a80a2758737488a0df5a976537dd1ca Mon Sep 17 00:00:00 2001 From: Steve Durrheimer Date: Sat, 26 Mar 2016 22:31:17 +0100 Subject: [PATCH 08/18] Add zsh completion for gelf-compression log driver options Signed-off-by: Steve Durrheimer (cherry picked from commit ff31f166f205432f07059dbce2b07e25a10abf1f) Signed-off-by: Sebastiaan van Stijn --- contrib/completion/zsh/_docker | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/contrib/completion/zsh/_docker b/contrib/completion/zsh/_docker index e472a8bdc3..65e7768341 100644 --- a/contrib/completion/zsh/_docker +++ b/contrib/completion/zsh/_docker @@ -213,7 +213,7 @@ __docker_get_log_options() { awslogs_options=("awslogs-region" "awslogs-group" "awslogs-stream") fluentd_options=("env" "fluentd-address" "fluentd-async-connect" "fluentd-buffer-limit" "fluentd-retry-wait" "fluentd-max-retries" "labels" "tag") gcplogs_options=("env" "gcp-log-cmd" "gcp-project" "labels") - gelf_options=("env" "gelf-address" "labels" "tag") + gelf_options=("env" "gelf-address" "gelf-compression-level" "gelf-compression-type" "labels" "tag") journald_options=("env" "labels" "tag") json_file_options=("env" "labels" "max-file" "max-size") syslog_options=("syslog-address" "syslog-tls-ca-cert" "syslog-tls-cert" "syslog-tls-key" "syslog-tls-skip-verify" "syslog-facility" "tag") From c4b33d5334c9021fcca4cb2cf92857a4ea8ed69c Mon Sep 17 00:00:00 2001 From: Steve Durrheimer Date: Sat, 26 Mar 2016 22:36:06 +0100 Subject: [PATCH 09/18] Add zsh completion for etwlogs and gcplogs log drivers Signed-off-by: Steve Durrheimer (cherry picked from commit ca3ff89e56026d31ec0fdd2bf59b0db3ca5be3c1) Signed-off-by: Sebastiaan van Stijn --- contrib/completion/zsh/_docker | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/contrib/completion/zsh/_docker b/contrib/completion/zsh/_docker index 65e7768341..f810b535fd 100644 --- a/contrib/completion/zsh/_docker +++ b/contrib/completion/zsh/_docker @@ -576,7 +576,7 @@ __docker_subcommand() { "($help)--ipc=[IPC namespace to use]:IPC namespace: " "($help)*--link=[Add link to another container]:link:->link" "($help)*"{-l=,--label=}"[Container metadata]:label: " - "($help)--log-driver=[Default driver for container logs]:Logging driver:(json-file syslog journald gelf fluentd awslogs splunk none)" + "($help)--log-driver=[Default driver for container logs]:Logging driver:(awslogs etwlogs fluentd gcplogs gelf journald json-file none splunk syslog)" "($help)*--log-opt=[Log driver specific options]:log driver options:__docker_log_options" "($help)--mac-address=[Container MAC address]:MAC address: " "($help)--name=[Container name]:name: " @@ -717,7 +717,7 @@ __docker_subcommand() { "($help)--ipv6[Enable IPv6 networking]" \ "($help -l --log-level)"{-l=,--log-level=}"[Logging level]:level:(debug info warn error fatal)" \ "($help)*--label=[Key=value labels]:label: " \ - "($help)--log-driver=[Default driver for container logs]:Logging driver:(json-file syslog journald gelf fluentd awslogs splunk none)" \ + "($help)--log-driver=[Default driver for container logs]:Logging driver:(awslogs etwlogs fluentd gcplogs gelf journald json-file none splunk syslog)" \ "($help)*--log-opt=[Log driver specific options]:log driver options:__docker_log_options" \ "($help)--mtu=[Network MTU]:mtu:(0 576 1420 1500 9000)" \ "($help -p --pidfile)"{-p=,--pidfile=}"[Path to use for daemon PID file]:PID file:_files" \ From 4a59dc5a419faec5fb6b87adfc002cba6686747a Mon Sep 17 00:00:00 2001 From: Steve Durrheimer Date: Sat, 26 Mar 2016 22:49:53 +0100 Subject: [PATCH 10/18] Add zsh completion for 'docker {pull,push} --disable-content-trust' Signed-off-by: Steve Durrheimer (cherry picked from commit b0235ffdddede003b3e125ffdef796a185e8a43e) Signed-off-by: Sebastiaan van Stijn --- contrib/completion/zsh/_docker | 2 ++ 1 file changed, 2 insertions(+) diff --git a/contrib/completion/zsh/_docker b/contrib/completion/zsh/_docker index f810b535fd..392f373bbb 100644 --- a/contrib/completion/zsh/_docker +++ b/contrib/completion/zsh/_docker @@ -937,11 +937,13 @@ __docker_subcommand() { _arguments $(__docker_arguments) \ $opts_help \ "($help -a --all-tags)"{-a,--all-tags}"[Download all tagged images]" \ + "($help)--disable-content-trust[Skip image verification]" \ "($help -):name:__docker_search" && ret=0 ;; (push) _arguments $(__docker_arguments) \ $opts_help \ + "($help)--disable-content-trust[Skip image signing]" \ "($help -): :__docker_images" && ret=0 ;; (rename) From 1fa9574e2b506e74e4988d294902bd3903ba90aa Mon Sep 17 00:00:00 2001 From: Harald Albers Date: Mon, 28 Mar 2016 04:29:53 -0700 Subject: [PATCH 11/18] bash completion for `docker daemon --containerd` Signed-off-by: Harald Albers (cherry picked from commit aeaba46c2c411523fc03ce5fcdf51f50e14b80ce) Signed-off-by: Sebastiaan van Stijn --- contrib/completion/bash/docker | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/contrib/completion/bash/docker b/contrib/completion/bash/docker index ad311dd1ec..48a51c6b0d 100644 --- a/contrib/completion/bash/docker +++ b/contrib/completion/bash/docker @@ -794,6 +794,7 @@ _docker_daemon() { --cluster-advertise --cluster-store --cluster-store-opt + --containerd --default-gateway --default-gateway-v6 --default-ulimit @@ -870,7 +871,7 @@ _docker_daemon() { __docker_complete_log_drivers return ;; - --pidfile|-p|--tlscacert|--tlscert|--tlskey) + --containerd|--pidfile|-p|--tlscacert|--tlscert|--tlskey) _filedir return ;; From 70c594508f0cb153b463f7d5ca20f6785fde8d35 Mon Sep 17 00:00:00 2001 From: Steve Durrheimer Date: Mon, 28 Mar 2016 13:56:08 +0200 Subject: [PATCH 12/18] Add zsh completion for 'docker daemon --containerd' Signed-off-by: Steve Durrheimer (cherry picked from commit 63b29eda68683bad2e375fee97b4d106a5ca5a77) Signed-off-by: Sebastiaan van Stijn --- contrib/completion/zsh/_docker | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/contrib/completion/zsh/_docker b/contrib/completion/zsh/_docker index 392f373bbb..4d6c83ddd0 100644 --- a/contrib/completion/zsh/_docker +++ b/contrib/completion/zsh/_docker @@ -690,6 +690,7 @@ __docker_subcommand() { "($help -b --bridge)"{-b=,--bridge=}"[Attach containers to a network bridge]:bridge:_net_interfaces" \ "($help)--bip=[Network bridge IP]:IP address: " \ "($help)--cgroup-parent=[Parent cgroup for all containers]:cgroup: " \ + "($help)--containerd=[Path to containerd socket]:socket:_files -g \"*.sock\"" \ "($help -D --debug)"{-D,--debug}"[Enable debug mode]" \ "($help)--default-gateway[Container default gateway IPv4 address]:IPv4 address: " \ "($help)--default-gateway-v6[Container default gateway IPv6 address]:IPv6 address: " \ @@ -727,9 +728,9 @@ __docker_subcommand() { "($help)--selinux-enabled[Enable selinux support]" \ "($help)*--storage-opt=[Storage driver options]:storage driver options: " \ "($help)--tls[Use TLS]" \ - "($help)--tlscacert=[Trust certs signed only by this CA]:PEM file:_files -g "*.(pem|crt)"" \ - "($help)--tlscert=[Path to TLS certificate file]:PEM file:_files -g "*.(pem|crt)"" \ - "($help)--tlskey=[Path to TLS key file]:Key file:_files -g "*.(pem|key)"" \ + "($help)--tlscacert=[Trust certs signed only by this CA]:PEM file:_files -g \"*.(pem|crt)\"" \ + "($help)--tlscert=[Path to TLS certificate file]:PEM file:_files -g \"*.(pem|crt)\"" \ + "($help)--tlskey=[Path to TLS key file]:Key file:_files -g \"*.(pem|key)\"" \ "($help)--tlsverify[Use TLS and verify the remote]" \ "($help)--userns-remap=[User/Group setting for user namespaces]:user\:group:->users-groups" \ "($help)--userland-proxy[Use userland proxy for loopback traffic]" && ret=0 From 81a3a72727d1bda4dc66eb3344e683809310570e Mon Sep 17 00:00:00 2001 From: Harald Albers Date: Mon, 28 Mar 2016 06:11:52 -0700 Subject: [PATCH 13/18] bash completion for `docker {run,create} --userns` Signed-off-by: Harald Albers (cherry picked from commit 62475684b9cb09ba5cc3f2dd3b3ad88031b391ba) Signed-off-by: Sebastiaan van Stijn --- contrib/completion/bash/docker | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/contrib/completion/bash/docker b/contrib/completion/bash/docker index 48a51c6b0d..97d62ef959 100644 --- a/contrib/completion/bash/docker +++ b/contrib/completion/bash/docker @@ -1668,6 +1668,7 @@ _docker_run() { --tmpfs --ulimit --user -u + --userns --uts --volume-driver --volumes-from @@ -1827,6 +1828,10 @@ _docker_run() { __docker_complete_user_group return ;; + --userns) + COMPREPLY=( $( compgen -W "host" -- "$cur" ) ) + return + ;; --volume-driver) __docker_complete_plugins Volume return From c3b3f8201a0150a5f952343fa7718959b1714875 Mon Sep 17 00:00:00 2001 From: Steve Durrheimer Date: Mon, 28 Mar 2016 15:39:27 +0200 Subject: [PATCH 14/18] Add zsh completion for 'docker {create,run} --userns' Signed-off-by: Steve Durrheimer (cherry picked from commit 39d7ff233bbc2f333cce30124bfd6f52bba1ae2a) Signed-off-by: Sebastiaan van Stijn --- contrib/completion/zsh/_docker | 1 + 1 file changed, 1 insertion(+) diff --git a/contrib/completion/zsh/_docker b/contrib/completion/zsh/_docker index 4d6c83ddd0..1351ae9579 100644 --- a/contrib/completion/zsh/_docker +++ b/contrib/completion/zsh/_docker @@ -539,6 +539,7 @@ __docker_subcommand() { "($help)--isolation=[Container isolation technology]:isolation:(default hyperv process)" "($help)*--shm-size=[Size of '/dev/shm' (format is '')]:shm size: " "($help)*--ulimit=[ulimit options]:ulimit: " + "($help)--userns=[Container user namespace]:user namespace:(host)" ) opts_build_create_run_update=( "($help)--cpu-shares=[CPU shares (relative weight)]:CPU shares:(0 10 100 200 500 800 1000)" From 08ccfd36e12cab5b6cea66354c57fcfe9f5a2427 Mon Sep 17 00:00:00 2001 From: Harald Albers Date: Mon, 28 Mar 2016 08:07:28 -0700 Subject: [PATCH 15/18] fix bash completion for `docker run --security-opt` Signed-off-by: Harald Albers (cherry picked from commit 020998e24cc9bdf16204f1db18cf4886897c1541) Signed-off-by: Sebastiaan van Stijn --- contrib/completion/bash/docker | 40 +++++++++++++++++----------------- 1 file changed, 20 insertions(+), 20 deletions(-) diff --git a/contrib/completion/bash/docker b/contrib/completion/bash/docker index 97d62ef959..a5586d97df 100644 --- a/contrib/completion/bash/docker +++ b/contrib/completion/bash/docker @@ -1705,6 +1705,24 @@ _docker_run() { __docker_complete_log_driver_options && return __docker_complete_restart && return + local key=$(__docker_map_key_of_current_option '--security-opt') + case "$key" in + label) + [[ $cur == *: ]] && return + COMPREPLY=( $( compgen -W "user: role: type: level: disable" -- "${cur##*=}") ) + if [ "${COMPREPLY[*]}" != "disable" ] ; then + __docker_nospace + fi + return + ;; + seccomp) + local cur=${cur##*=} + _filedir + COMPREPLY+=( $( compgen -W "unconfined" -- "$cur" ) ) + return + ;; + esac + case "$prev" in --add-host) case "$cur" in @@ -1802,26 +1820,8 @@ _docker_run() { return ;; --security-opt) - case "$cur" in - label=*:*) - ;; - label=*) - local cur=${cur##*=} - COMPREPLY=( $( compgen -W "user: role: type: level: disable" -- "$cur") ) - if [ "${COMPREPLY[*]}" != "disable" ] ; then - __docker_nospace - fi - ;; - seccomp=*) - local cur=${cur##*=} - _filedir - COMPREPLY+=( $( compgen -W "unconfined" -- "$cur" ) ) - ;; - *) - COMPREPLY=( $( compgen -W "label apparmor seccomp" -S ":" -- "$cur") ) - __docker_nospace - ;; - esac + COMPREPLY=( $( compgen -W "apparmor label seccomp" -S "=" -- "$cur") ) + __docker_nospace return ;; --user|-u) From 474631498c12d5e55169d119d1454f721fd6ac38 Mon Sep 17 00:00:00 2001 From: Harald Albers Date: Tue, 29 Mar 2016 09:59:04 +0200 Subject: [PATCH 16/18] bash completion for `docker {run,create} --security-opt no-new-privileges` Signed-off-by: Harald Albers (cherry picked from commit e96d086afdb111fc4b587d4e82c857dbfec4e87e) Signed-off-by: Sebastiaan van Stijn --- contrib/completion/bash/docker | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/contrib/completion/bash/docker b/contrib/completion/bash/docker index a5586d97df..ecf0f6fd99 100644 --- a/contrib/completion/bash/docker +++ b/contrib/completion/bash/docker @@ -1820,8 +1820,10 @@ _docker_run() { return ;; --security-opt) - COMPREPLY=( $( compgen -W "apparmor label seccomp" -S "=" -- "$cur") ) - __docker_nospace + COMPREPLY=( $( compgen -W "apparmor= label= no-new-privileges seccomp=" -- "$cur") ) + if [ "${COMPREPLY[*]}" != "no-new-privileges" ] ; then + __docker_nospace + fi return ;; --user|-u) From 50552642cafc4332992ac8cef8cd30e851423694 Mon Sep 17 00:00:00 2001 From: Harald Albers Date: Tue, 29 Mar 2016 09:57:10 -0700 Subject: [PATCH 17/18] bash completions: Improve consistency for options with default=true Completion of these options was not handled consistently. Now all such options immediatly complete with =false appended. Signed-off-by: Harald Albers (cherry picked from commit 39b9b63e364dc5e2bbc3e73f29b75f9de5c5dbf0) Signed-off-by: Sebastiaan van Stijn --- contrib/completion/bash/docker | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/contrib/completion/bash/docker b/contrib/completion/bash/docker index ecf0f6fd99..84392e90b2 100644 --- a/contrib/completion/bash/docker +++ b/contrib/completion/bash/docker @@ -615,7 +615,7 @@ _docker_attach() { case "$cur" in -*) - COMPREPLY=( $( compgen -W "--detach-keys --help --no-stdin --sig-proxy" -- "$cur" ) ) + COMPREPLY=( $( compgen -W "--detach-keys --help --no-stdin --sig-proxy=false" -- "$cur" ) ) ;; *) local counter=$(__docker_pos_first_nonflag '--detach-keys') @@ -702,7 +702,7 @@ _docker_commit() { case "$cur" in -*) - COMPREPLY=( $( compgen -W "--author -a --change -c --help --message -m --pause -p" -- "$cur" ) ) + COMPREPLY=( $( compgen -W "--author -a --change -c --help --message -m --pause=false -p=false" -- "$cur" ) ) ;; *) local counter=$(__docker_pos_first_nonflag '--author|-a|--change|-c|--message|-m') From e799da7e6a9191958513b5de100be819185feb18 Mon Sep 17 00:00:00 2001 From: Harald Albers Date: Tue, 29 Mar 2016 21:56:24 -0700 Subject: [PATCH 18/18] bash completion for `docker history --human` Signed-off-by: Harald Albers (cherry picked from commit a2dbf7626c9950aab5049f0e485e053232be1e5f) 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 84392e90b2..848412ea48 100644 --- a/contrib/completion/bash/docker +++ b/contrib/completion/bash/docker @@ -1077,7 +1077,7 @@ _docker_help() { _docker_history() { case "$cur" in -*) - COMPREPLY=( $( compgen -W "--help --no-trunc --quiet -q" -- "$cur" ) ) + COMPREPLY=( $( compgen -W "--help --human=false -H=false --no-trunc --quiet -q" -- "$cur" ) ) ;; *) local counter=$(__docker_pos_first_nonflag)