Browse code

Add bash completion for secret management

Signed-off-by: Harald Albers <github@albersweb.de>
(cherry picked from commit 324dd3cfec756109df58128376b888684d8cf521)
Signed-off-by: Victor Vieux <vieux@docker.com>

Harald Albers authored on 2016/12/05 04:25:41
Showing 1 changed files
... ...
@@ -23,6 +23,7 @@
23 23
 # DOCKER_COMPLETION_SHOW_CONTAINER_IDS
24 24
 # DOCKER_COMPLETION_SHOW_NETWORK_IDS
25 25
 # DOCKER_COMPLETION_SHOW_NODE_IDS
26
+# DOCKER_COMPLETION_SHOW_SECRET_IDS
26 27
 # DOCKER_COMPLETION_SHOW_SERVICE_IDS
27 28
 #   "no"  - Show names only (default)
28 29
 #   "yes" - Show names and ids
... ...
@@ -311,6 +312,22 @@ __docker_complete_runtimes() {
311 311
 	COMPREPLY=( $(compgen -W "$(__docker_runtimes)" -- "$cur") )
312 312
 }
313 313
 
314
+# __docker_secrets returns a list of all secrets.
315
+# By default, only names of secrets are returned.
316
+# Set DOCKER_COMPLETION_SHOW_SECRET_IDS=yes to also complete IDs of secrets.
317
+__docker_secrets() {
318
+	local fields='$2'  # default: name only
319
+	[ "${DOCKER_COMPLETION_SHOW_SECRET_IDS}" = yes ] && fields='$1,$2' # ID and name
320
+
321
+	__docker_q secret ls | awk "NR>1 {print $fields}"
322
+}
323
+
324
+# __docker_complete_secrets applies completion of secrets based on the current value
325
+# of `$cur`.
326
+__docker_complete_secrets() {
327
+	COMPREPLY=( $(compgen -W "$(__docker_secrets)" -- "$cur") )
328
+}
329
+
314 330
 # __docker_stacks returns a list of all stacks.
315 331
 __docker_stacks() {
316 332
 	__docker_q stack ls | awk 'NR>1 {print $1}'
... ...
@@ -2736,6 +2753,7 @@ _docker_service_update() {
2736 2736
 			--mode
2737 2737
 			--name
2738 2738
 			--port
2739
+			--secret
2739 2740
 		"
2740 2741
 
2741 2742
 		case "$prev" in
... ...
@@ -2755,6 +2773,10 @@ _docker_service_update() {
2755 2755
 				COMPREPLY=( $( compgen -W "global replicated" -- "$cur" ) )
2756 2756
 				return
2757 2757
 				;;
2758
+			--secret)
2759
+				__docker_complete_secrets
2760
+				return
2761
+				;;
2758 2762
 			--group)
2759 2763
 			COMPREPLY=( $(compgen -g -- "$cur") )
2760 2764
 			return
... ...
@@ -2779,6 +2801,8 @@ _docker_service_update() {
2779 2779
 			--image
2780 2780
 			--port-add
2781 2781
 			--port-rm
2782
+			--secret-add
2783
+			--secret-rm
2782 2784
 		"
2783 2785
 
2784 2786
 		case "$prev" in
... ...
@@ -2802,6 +2826,10 @@ _docker_service_update() {
2802 2802
 				__docker_complete_image_repos_and_tags
2803 2803
 				return
2804 2804
 				;;
2805
+			--secret-add|--secret-rm)
2806
+				__docker_complete_secrets
2807
+				return
2808
+				;;
2805 2809
 		esac
2806 2810
 	fi
2807 2811
 
... ...
@@ -3329,6 +3357,90 @@ _docker_save() {
3329 3329
 	_docker_image_save
3330 3330
 }
3331 3331
 
3332
+
3333
+_docker_secret() {
3334
+	local subcommands="
3335
+		create
3336
+		inspect
3337
+		ls
3338
+		rm
3339
+	"
3340
+	local aliases="
3341
+		list
3342
+		remove
3343
+	"
3344
+	__docker_subcommands "$subcommands $aliases" && return
3345
+
3346
+	case "$cur" in
3347
+		-*)
3348
+			COMPREPLY=( $( compgen -W "--help" -- "$cur" ) )
3349
+			;;
3350
+		*)
3351
+			COMPREPLY=( $( compgen -W "$subcommands" -- "$cur" ) )
3352
+			;;
3353
+	esac
3354
+}
3355
+
3356
+_docker_secret_create() {
3357
+	case "$prev" in
3358
+		--label|-l)
3359
+			return
3360
+			;;
3361
+	esac
3362
+
3363
+	case "$cur" in
3364
+		-*)
3365
+			COMPREPLY=( $( compgen -W "--help --label -l" -- "$cur" ) )
3366
+			;;
3367
+	esac
3368
+}
3369
+
3370
+_docker_secret_inspect() {
3371
+	case "$prev" in
3372
+		--format|-f)
3373
+			return
3374
+			;;
3375
+	esac
3376
+
3377
+	case "$cur" in
3378
+		-*)
3379
+			COMPREPLY=( $( compgen -W "--format -f --help" -- "$cur" ) )
3380
+			;;
3381
+		*)
3382
+			__docker_complete_secrets
3383
+			;;
3384
+	esac
3385
+}
3386
+
3387
+_docker_secret_list() {
3388
+	_docker_secret_ls
3389
+}
3390
+
3391
+_docker_secret_ls() {
3392
+	case "$cur" in
3393
+		-*)
3394
+			COMPREPLY=( $( compgen -W "--help --quiet -q" -- "$cur" ) )
3395
+			;;
3396
+	esac
3397
+}
3398
+
3399
+_docker_secret_remove() {
3400
+	case "$cur" in
3401
+		-*)
3402
+			COMPREPLY=( $( compgen -W "--help" -- "$cur" ) )
3403
+			;;
3404
+		*)
3405
+			__docker_complete_secrets
3406
+			;;
3407
+	esac
3408
+}
3409
+
3410
+_docker_secret_rm() {
3411
+	_docker_secret_remove
3412
+}
3413
+
3414
+
3415
+
3332 3416
 _docker_search() {
3333 3417
 	local key=$(__docker_map_key_of_current_option '--filter|-f')
3334 3418
 	case "$key" in
... ...
@@ -3852,6 +3964,7 @@ _docker() {
3852 3852
 		run
3853 3853
 		save
3854 3854
 		search
3855
+		secret
3855 3856
 		service
3856 3857
 		stack
3857 3858
 		start