Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions .github/CODEOWNERS
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
# GitHub code owners
# See https://github.com/blog/2392-introducing-code-owners

cli/command/stack/** @vdemeester
cli/command/stack/** @vdemeester @silvin-lubecki
cli/compose/** @vdemeester
contrib/completion/bash/** @albers
contrib/completion/zsh/** @sdurrheimer
docs/** @mistyhacks @vdemeester @thaJeztah
docs/** @vdemeester @thaJeztah
6 changes: 0 additions & 6 deletions MAINTAINERS
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,6 @@
# TODO Describe the docs maintainers role.

people = [
"misty",
"thajeztah"
]

Expand Down Expand Up @@ -95,11 +94,6 @@
Email = "justin.cormack@docker.com"
GitHub = "justincormack"

[people.misty]
Name = "Misty Stanley-Jones"
Email = "misty@docker.com"
GitHub = "mistyhacks"

[people.programmerq]
Name = "Jeff Anderson"
Email = "jeff@docker.com"
Expand Down
2 changes: 0 additions & 2 deletions contrib/completion/REVIEWERS

This file was deleted.

127 changes: 96 additions & 31 deletions contrib/completion/bash/docker
Original file line number Diff line number Diff line change
Expand Up @@ -288,10 +288,9 @@ __docker_complete_networks() {
COMPREPLY=( $(compgen -W "$(__docker_networks "$@")" -- "$current") )
}

# shellcheck disable=SC2128,SC2178
__docker_complete_containers_in_network() {
local containers=$(__docker_q network inspect -f '{{range $i, $c := .Containers}}{{$i}} {{$c.Name}} {{end}}' "$1")
COMPREPLY=( $(compgen -W "$containers" -- "$cur") )
local containers=($(__docker_q network inspect -f '{{range $i, $c := .Containers}}{{$i}} {{$c.Name}} {{end}}' "$1"))
COMPREPLY=( $(compgen -W "${containers[*]}" -- "$cur") )
}

# __docker_volumes returns a list of all volumes. Additional options to
Expand Down Expand Up @@ -347,8 +346,7 @@ __docker_plugins_bundled() {
for del in "${remove[@]}" ; do
plugins=(${plugins[@]/$del/})
done
# shellcheck disable=SC2145
echo "${plugins[@]} ${add[@]}"
echo "${plugins[@]}" "${add[@]}"
}

# __docker_complete_plugins_bundled applies completion of plugins based on the current
Expand Down Expand Up @@ -584,6 +582,31 @@ __docker_daemon_os_is() {
[ "$actual_os" = "$expected_os" ]
}

# __docker_stack_orchestrator_is tests whether the client is configured to use
# the orchestrator that is passed in as the first argument.
__docker_stack_orchestrator_is() {
case "$1" in
kubernetes)
if [ -z "$stack_orchestrator_is_kubernetes" ] ; then
__docker_q stack ls --help | grep -qe --namespace
stack_orchestrator_is_kubernetes=$?
fi
return $stack_orchestrator_is_kubernetes
;;
swarm)
if [ -z "$stack_orchestrator_is_swarm" ] ; then
__docker_q stack deploy --help | grep -qe "with-registry-auth"
stack_orchestrator_is_swarm=$?
fi
return $stack_orchestrator_is_swarm
;;
*)
return 1
;;

esac
}

# __docker_pos_first_nonflag finds the position of the first word that is neither
# option nor an option's argument. If there are options that require arguments,
# you should pass a glob describing those options, e.g. "--option1|-o|--option2"
Expand Down Expand Up @@ -1050,6 +1073,23 @@ __docker_complete_signals() {
COMPREPLY=( $( compgen -W "${signals[*]} ${signals[*]#SIG}" -- "$( echo "$cur" | tr '[:lower:]' '[:upper:]')" ) )
}

__docker_complete_stack_orchestrator_options() {
case "$prev" in
--kubeconfig)
_filedir
return 0
;;
--namespace)
return 0
;;
--orchestrator)
COMPREPLY=( $( compgen -W "all kubernetes swarm" -- "$cur") )
return 0
;;
esac
return 1
}

__docker_complete_user_group() {
if [[ $cur == *:* ]] ; then
COMPREPLY=( $(compgen -g -- "${cur#*:}") )
Expand Down Expand Up @@ -1395,7 +1435,7 @@ _docker_container_commit() {
_docker_container_cp() {
case "$cur" in
-*)
COMPREPLY=( $( compgen -W "--follow-link -L --help" -- "$cur" ) )
COMPREPLY=( $( compgen -W "--archive -a --follow-link -L --help" -- "$cur" ) )
;;
*)
local counter=$(__docker_pos_first_nonflag)
Expand All @@ -1414,8 +1454,7 @@ _docker_container_cp() {
local containers=( ${COMPREPLY[@]} )

COMPREPLY=( $( compgen -W "${files[*]} ${containers[*]}" -- "$cur" ) )
# shellcheck disable=SC2128
if [[ "$COMPREPLY" == *: ]]; then
if [[ "${COMPREPLY[*]}" = *: ]]; then
__docker_nospace
fi
return
Expand Down Expand Up @@ -1913,8 +1952,7 @@ _docker_container_run_and_create() {
;;
*)
COMPREPLY=( $( compgen -W 'none host private shareable container:' -- "$cur" ) )
# shellcheck disable=SC2128
if [ "$COMPREPLY" = "container:" ]; then
if [ "${COMPREPLY[*]}" = "container:" ]; then
__docker_nospace
fi
;;
Expand Down Expand Up @@ -1968,8 +2006,7 @@ _docker_container_run_and_create() {
;;
*)
COMPREPLY=( $( compgen -W 'host container:' -- "$cur" ) )
# shellcheck disable=SC2128
if [ "$COMPREPLY" = "container:" ]; then
if [ "${COMPREPLY[*]}" = "container:" ]; then
__docker_nospace
fi
;;
Expand Down Expand Up @@ -2032,15 +2069,14 @@ _docker_container_run_and_create() {

_docker_container_start() {
__docker_complete_detach_keys && return
# shellcheck disable=SC2078
case "$prev" in
--checkpoint)
if [ __docker_daemon_is_experimental ] ; then
if __docker_daemon_is_experimental ; then
return
fi
;;
--checkpoint-dir)
if [ __docker_daemon_is_experimental ] ; then
if __docker_daemon_is_experimental ; then
_filedir -d
return
fi
Expand Down Expand Up @@ -3220,7 +3256,7 @@ _docker_service_logs() {

case "$cur" in
-*)
COMPREPLY=( $( compgen -W "--follow -f --help --no-resolve --no-task-ids --no-trunc --since --tail --timestamps -t" -- "$cur" ) )
COMPREPLY=( $( compgen -W "--details --follow -f --help --no-resolve --no-task-ids --no-trunc --raw --since --tail --timestamps -t" -- "$cur" ) )
;;
*)
local counter=$(__docker_pos_first_nonflag '--since|--tail')
Expand Down Expand Up @@ -4378,11 +4414,15 @@ _docker_stack() {
remove
up
"

__docker_complete_stack_orchestrator_options && return
__docker_subcommands "$subcommands $aliases" && return

case "$cur" in
-*)
COMPREPLY=( $( compgen -W "--help" -- "$cur" ) )
local options="--help --orchestrator"
__docker_stack_orchestrator_is kubernetes && options+=" --kubeconfig"
COMPREPLY=( $( compgen -W "$options" -- "$cur" ) )
;;
*)
COMPREPLY=( $( compgen -W "$subcommands" -- "$cur" ) )
Expand All @@ -4391,12 +4431,12 @@ _docker_stack() {
}

_docker_stack_deploy() {
__docker_complete_stack_orchestrator_options && return

case "$prev" in
--bundle-file)
if __docker_daemon_is_experimental ; then
_filedir dab
return
fi
_filedir dab
return
;;
--compose-file|-c)
_filedir yml
Expand All @@ -4410,12 +4450,14 @@ _docker_stack_deploy() {

case "$cur" in
-*)
local options="--compose-file -c --help --prune --resolve-image --with-registry-auth"
__docker_daemon_is_experimental && options+=" --bundle-file"
local options="--compose-file -c --help --orchestrator"
__docker_daemon_is_experimental && __docker_stack_orchestrator_is swarm && options+=" --bundle-file"
__docker_stack_orchestrator_is kubernetes && options+=" --kubeconfig --namespace"
__docker_stack_orchestrator_is swarm && options+=" --prune --resolve-image --with-registry-auth"
COMPREPLY=( $( compgen -W "$options" -- "$cur" ) )
;;
*)
local counter=$(__docker_pos_first_nonflag '--bundle-file|--compose-file|-c|--resolve-image')
local counter=$(__docker_pos_first_nonflag '--bundle-file|--compose-file|-c|--kubeconfig|--namespace|--orchestrator|--resolve-image')
if [ "$cword" -eq "$counter" ]; then
__docker_complete_stacks
fi
Expand All @@ -4432,6 +4474,8 @@ _docker_stack_list() {
}

_docker_stack_ls() {
__docker_complete_stack_orchestrator_options && return

case "$prev" in
--format)
return
Expand All @@ -4440,7 +4484,9 @@ _docker_stack_ls() {

case "$cur" in
-*)
COMPREPLY=( $( compgen -W "--format --help" -- "$cur" ) )
local options="--format --help --orchestrator"
__docker_stack_orchestrator_is kubernetes && options+=" --all-namespaces --kubeconfig --namespace"
COMPREPLY=( $( compgen -W "$options" -- "$cur" ) )
;;
esac
}
Expand All @@ -4462,6 +4508,8 @@ _docker_stack_ps() {
;;
esac

__docker_complete_stack_orchestrator_options && return

case "$prev" in
--filter|-f)
COMPREPLY=( $( compgen -S = -W "id name desired-state" -- "$cur" ) )
Expand All @@ -4475,10 +4523,12 @@ _docker_stack_ps() {

case "$cur" in
-*)
COMPREPLY=( $( compgen -W "--filter -f --format --help --no-resolve --no-trunc --quiet -q" -- "$cur" ) )
local options="--filter -f --format --help --no-resolve --no-trunc --orchestrator --quiet -q"
__docker_stack_orchestrator_is kubernetes && options+=" --all-namespaces --kubeconfig --namespace"
COMPREPLY=( $( compgen -W "$options" -- "$cur" ) )
;;
*)
local counter=$(__docker_pos_first_nonflag '--filter|-f')
local counter=$(__docker_pos_first_nonflag '--all-namespaces|--filter|-f|--format|--kubeconfig|--namespace')
if [ "$cword" -eq "$counter" ]; then
__docker_complete_stacks
fi
Expand All @@ -4491,9 +4541,13 @@ _docker_stack_remove() {
}

_docker_stack_rm() {
__docker_complete_stack_orchestrator_options && return

case "$cur" in
-*)
COMPREPLY=( $( compgen -W "--help" -- "$cur" ) )
local options="--help --orchestrator"
__docker_stack_orchestrator_is kubernetes && options+=" --kubeconfig --namespace"
COMPREPLY=( $( compgen -W "$options" -- "$cur" ) )
;;
*)
__docker_complete_stacks
Expand All @@ -4517,6 +4571,8 @@ _docker_stack_services() {
;;
esac

__docker_complete_stack_orchestrator_options && return

case "$prev" in
--filter|-f)
COMPREPLY=( $( compgen -S = -W "id label name" -- "$cur" ) )
Expand All @@ -4530,10 +4586,12 @@ _docker_stack_services() {

case "$cur" in
-*)
COMPREPLY=( $( compgen -W "--filter -f --format --help --quiet -q" -- "$cur" ) )
local options="--filter -f --format --help --orchestrator --quiet -q"
__docker_stack_orchestrator_is kubernetes && options+=" --kubeconfig --namespace"
COMPREPLY=( $( compgen -W "$options" -- "$cur" ) )
;;
*)
local counter=$(__docker_pos_first_nonflag '--filter|-f|--format')
local counter=$(__docker_pos_first_nonflag '--filter|-f|--format|--kubeconfig|--namespace|--orchestrator')
if [ "$cword" -eq "$counter" ]; then
__docker_complete_stacks
fi
Expand Down Expand Up @@ -4800,6 +4858,8 @@ _docker_top() {
}

_docker_version() {
__docker_complete_stack_orchestrator_options && return

case "$prev" in
--format|-f)
return
Expand All @@ -4808,7 +4868,9 @@ _docker_version() {

case "$cur" in
-*)
COMPREPLY=( $( compgen -W "--format -f --help" -- "$cur" ) )
local options="--format -f --help"
__docker_stack_orchestrator_is kubernetes && options+=" --kubeconfig"
COMPREPLY=( $( compgen -W "$options" -- "$cur" ) )
;;
esac
}
Expand Down Expand Up @@ -5038,6 +5100,9 @@ _docker() {

local host config daemon_os

# variables to cache client info, populated on demand for performance reasons
local stack_orchestrator_is_kubernetes stack_orchestrator_is_swarm

COMPREPLY=()
local cur prev words cword
_get_comp_words_by_ref -n : cur prev words cword
Expand Down