Selaa lähdekoodia

Merge pull request #29109 from albers/completion-secrets

Add bash completion for secret management
Brian Goff 8 vuotta sitten
vanhempi
commit
602efb0cab
1 muutettua tiedostoa jossa 113 lisäystä ja 0 poistoa
  1. 113 0
      contrib/completion/bash/docker

+ 113 - 0
contrib/completion/bash/docker

@@ -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