Add bash completion for secret management

Signed-off-by: Harald Albers <github@albersweb.de>
This commit is contained in:
Harald Albers 2016-12-04 11:25:41 -08:00 committed by Tibor Vass
parent 45a292bc44
commit 6afaa9c01f
1 changed files with 113 additions and 0 deletions

View File

@ -23,6 +23,7 @@
# DOCKER_COMPLETION_SHOW_CONTAINER_IDS # DOCKER_COMPLETION_SHOW_CONTAINER_IDS
# DOCKER_COMPLETION_SHOW_NETWORK_IDS # DOCKER_COMPLETION_SHOW_NETWORK_IDS
# DOCKER_COMPLETION_SHOW_NODE_IDS # DOCKER_COMPLETION_SHOW_NODE_IDS
# DOCKER_COMPLETION_SHOW_SECRET_IDS
# DOCKER_COMPLETION_SHOW_SERVICE_IDS # DOCKER_COMPLETION_SHOW_SERVICE_IDS
# "no" - Show names only (default) # "no" - Show names only (default)
# "yes" - Show names and ids # "yes" - Show names and ids
@ -311,6 +312,22 @@ __docker_complete_runtimes() {
COMPREPLY=( $(compgen -W "$(__docker_runtimes)" -- "$cur") ) 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 returns a list of all stacks.
__docker_stacks() { __docker_stacks() {
__docker_q stack ls | awk 'NR>1 {print $1}' __docker_q stack ls | awk 'NR>1 {print $1}'
@ -2736,6 +2753,7 @@ _docker_service_update() {
--mode --mode
--name --name
--port --port
--secret
" "
case "$prev" in case "$prev" in
@ -2755,6 +2773,10 @@ _docker_service_update() {
COMPREPLY=( $( compgen -W "global replicated" -- "$cur" ) ) COMPREPLY=( $( compgen -W "global replicated" -- "$cur" ) )
return return
;; ;;
--secret)
__docker_complete_secrets
return
;;
--group) --group)
COMPREPLY=( $(compgen -g -- "$cur") ) COMPREPLY=( $(compgen -g -- "$cur") )
return return
@ -2779,6 +2801,8 @@ _docker_service_update() {
--image --image
--port-add --port-add
--port-rm --port-rm
--secret-add
--secret-rm
" "
case "$prev" in case "$prev" in
@ -2802,6 +2826,10 @@ _docker_service_update() {
__docker_complete_image_repos_and_tags __docker_complete_image_repos_and_tags
return return
;; ;;
--secret-add|--secret-rm)
__docker_complete_secrets
return
;;
esac esac
fi fi
@ -3329,6 +3357,90 @@ _docker_save() {
_docker_image_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() { _docker_search() {
local key=$(__docker_map_key_of_current_option '--filter|-f') local key=$(__docker_map_key_of_current_option '--filter|-f')
case "$key" in case "$key" in
@ -3858,6 +3970,7 @@ _docker() {
run run
save save
search search
secret
service service
stack stack
start start