From 2ac475cf974259f94656b84100546c19cf9fa562 Mon Sep 17 00:00:00 2001 From: Harald Albers Date: Tue, 31 Jul 2018 21:24:31 +0200 Subject: [PATCH] Add bash completion for `manifest` command family Signed-off-by: Harald Albers (cherry picked from commit 0fb4256a00d932d9fe5bc918cb4582bf24f6567d) Signed-off-by: Sebastiaan van Stijn --- cli/command/manifest/util.go | 1 + contrib/completion/bash/docker | 108 +++++++++++++++++++++++++++++++++ 2 files changed, 109 insertions(+) diff --git a/cli/command/manifest/util.go b/cli/command/manifest/util.go index 8d4bd30364..7464a1d183 100644 --- a/cli/command/manifest/util.go +++ b/cli/command/manifest/util.go @@ -18,6 +18,7 @@ type osArch struct { // list of valid os/arch values (see "Optional Environment Variables" section // of https://golang.org/doc/install/source // Added linux/s390x as we know System z support already exists +// Keep in sync with _docker_manifest_annotate in contrib/completion/bash/docker var validOSArches = map[osArch]bool{ {os: "darwin", arch: "386"}: true, {os: "darwin", arch: "amd64"}: true, diff --git a/contrib/completion/bash/docker b/contrib/completion/bash/docker index e1e4dcd001..54cd8394d4 100644 --- a/contrib/completion/bash/docker +++ b/contrib/completion/bash/docker @@ -1144,6 +1144,7 @@ _docker_docker() { *) local counter=$( __docker_pos_first_nonflag "$(__docker_to_extglob "$global_options_with_args")" ) if [ "$cword" -eq "$counter" ]; then + __docker_client_is_experimental && commands+=(${experimental_client_commands[*]}) __docker_server_is_experimental && commands+=(${experimental_server_commands[*]}) COMPREPLY=( $( compgen -W "${commands[*]} help" -- "$cur" ) ) fi @@ -3836,6 +3837,109 @@ _docker_swarm_update() { esac } +_docker_manifest() { + local subcommands=" + annotate + create + inspect + push + " + __docker_subcommands "$subcommands" && return + + case "$cur" in + -*) + COMPREPLY=( $( compgen -W "--help" -- "$cur" ) ) + ;; + *) + COMPREPLY=( $( compgen -W "$subcommands" -- "$cur" ) ) + ;; + esac +} + +_docker_manifest_annotate() { + case "$prev" in + --arch) + COMPREPLY=( $( compgen -W " + 386 + amd64 + arm + arm64 + mips64 + mips64le + ppc64le + s390x" -- "$cur" ) ) + return + ;; + --os) + COMPREPLY=( $( compgen -W " + darwin + dragonfly + freebsd + linux + netbsd + openbsd + plan9 + solaris + windows" -- "$cur" ) ) + return + ;; + --os-features|--variant) + return + ;; + esac + + case "$cur" in + -*) + COMPREPLY=( $( compgen -W "--arch --help --os --os-features --variant" -- "$cur" ) ) + ;; + *) + local counter=$( __docker_pos_first_nonflag "--arch|--os|--os-features|--variant" ) + if [ "$cword" -eq "$counter" ] || [ "$cword" -eq "$((counter + 1))" ]; then + __docker_complete_images --force-tag --id + fi + ;; + esac +} + +_docker_manifest_create() { + case "$cur" in + -*) + COMPREPLY=( $( compgen -W "--amend -a --help --insecure" -- "$cur" ) ) + ;; + *) + __docker_complete_images --force-tag --id + ;; + esac +} + +_docker_manifest_inspect() { + case "$cur" in + -*) + COMPREPLY=( $( compgen -W "--help --insecure --verbose -v" -- "$cur" ) ) + ;; + *) + local counter=$( __docker_pos_first_nonflag ) + if [ "$cword" -eq "$counter" ] || [ "$cword" -eq "$((counter + 1))" ]; then + __docker_complete_images --force-tag --id + fi + ;; + esac +} + +_docker_manifest_push() { + case "$cur" in + -*) + COMPREPLY=( $( compgen -W "--help --insecure --purge -p" -- "$cur" ) ) + ;; + *) + local counter=$( __docker_pos_first_nonflag ) + if [ "$cword" -eq "$counter" ]; then + __docker_complete_images --force-tag --id + fi + ;; + esac +} + _docker_node() { local subcommands=" demote @@ -5093,6 +5197,10 @@ _docker() { wait ) + local experimental_client_commands=( + manifest + ) + local experimental_server_commands=( checkpoint deploy