diff --git a/contrib/completion/bash/docker b/contrib/completion/bash/docker index 14a362fa81..8410969e68 100644 --- a/contrib/completion/bash/docker +++ b/contrib/completion/bash/docker @@ -23,6 +23,7 @@ # DOCKER_COMPLETION_SHOW_CONTAINER_IDS # DOCKER_COMPLETION_SHOW_NETWORK_IDS # DOCKER_COMPLETION_SHOW_NODE_IDS +# DOCKER_COMPLETION_SHOW_SECRET_IDS # DOCKER_COMPLETION_SHOW_SERVICE_IDS # "no" - Show names only (default) # "yes" - Show names and ids @@ -311,6 +312,22 @@ __docker_complete_runtimes() { COMPREPLY=( $(compgen -W "$(__docker_runtimes)" -- "$cur") ) } +# __docker_secrets returns a list of all secrets. +# By default, only names of secrets are returned. +# Set DOCKER_COMPLETION_SHOW_SECRET_IDS=yes to also complete IDs of secrets. +__docker_secrets() { + local fields='$2' # default: name only + [ "${DOCKER_COMPLETION_SHOW_SECRET_IDS}" = yes ] && fields='$1,$2' # ID and name + + __docker_q secret ls | awk "NR>1 {print $fields}" +} + +# __docker_complete_secrets applies completion of secrets based on the current value +# of `$cur`. +__docker_complete_secrets() { + COMPREPLY=( $(compgen -W "$(__docker_secrets)" -- "$cur") ) +} + # __docker_stacks returns a list of all stacks. __docker_stacks() { __docker_q stack ls | awk 'NR>1 {print $1}' @@ -2736,6 +2753,7 @@ _docker_service_update() { --mode --name --port + --secret " case "$prev" in @@ -2755,6 +2773,10 @@ _docker_service_update() { COMPREPLY=( $( compgen -W "global replicated" -- "$cur" ) ) return ;; + --secret) + __docker_complete_secrets + return + ;; --group) COMPREPLY=( $(compgen -g -- "$cur") ) return @@ -2779,6 +2801,8 @@ _docker_service_update() { --image --port-add --port-rm + --secret-add + --secret-rm " case "$prev" in @@ -2802,6 +2826,10 @@ _docker_service_update() { __docker_complete_image_repos_and_tags return ;; + --secret-add|--secret-rm) + __docker_complete_secrets + return + ;; esac fi @@ -3329,6 +3357,90 @@ _docker_save() { _docker_image_save } + +_docker_secret() { + 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_secret_create() { + case "$prev" in + --label|-l) + return + ;; + esac + + case "$cur" in + -*) + COMPREPLY=( $( compgen -W "--help --label -l" -- "$cur" ) ) + ;; + esac +} + +_docker_secret_inspect() { + case "$prev" in + --format|-f) + return + ;; + esac + + case "$cur" in + -*) + COMPREPLY=( $( compgen -W "--format -f --help" -- "$cur" ) ) + ;; + *) + __docker_complete_secrets + ;; + esac +} + +_docker_secret_list() { + _docker_secret_ls +} + +_docker_secret_ls() { + case "$cur" in + -*) + COMPREPLY=( $( compgen -W "--help --quiet -q" -- "$cur" ) ) + ;; + esac +} + +_docker_secret_remove() { + case "$cur" in + -*) + COMPREPLY=( $( compgen -W "--help" -- "$cur" ) ) + ;; + *) + __docker_complete_secrets + ;; + esac +} + +_docker_secret_rm() { + _docker_secret_remove +} + + + _docker_search() { local key=$(__docker_map_key_of_current_option '--filter|-f') case "$key" in @@ -3858,6 +3970,7 @@ _docker() { run save search + secret service stack start