Add zsh completion for 'docker container' subcommands

Signed-off-by: Steve Durrheimer <s.durrheimer@gmail.com>
This commit is contained in:
Steve Durrheimer 2016-10-29 15:27:41 +02:00 committed by Tibor Vass
parent b5721467b2
commit cfb9ce1683
1 changed files with 146 additions and 1 deletions

View File

@ -472,6 +472,134 @@ __docker_complete_events_filter() {
return ret
}
# BO container
__docker_container_commands() {
local -a _docker_container_subcommands
_docker_container_subcommands=(
"attach:Attach to a running container"
"commit:Create a new image from a container's changes"
"cp:Copy files/folders between a container and the local filesystem"
"create:Create a new container"
"diff:Inspect changes on a container's filesystem"
"exec:Run a command in a running container"
"export:Export a container's filesystem as a tar archive"
"inspect:Display detailed information on one or more containers"
"kill:Kill one or more running containers"
"logs:Fetch the logs of a container"
"ls:List containers"
"pause:Pause all processes within one or more containers"
"port:List port mappings or a specific mapping for the container"
"prune:Remove all stopped containers"
"rename:Rename a container"
"restart:Restart one or more containers"
"rm:Remove one or more containers"
"run:Run a command in a new container"
"start:Start one or more stopped containers"
"stats:Display a live stream of container(s) resource usage statistics"
"stop:Stop one or more running containers"
"top:Display the running processes of a container"
"unpause:Unpause all processes within one or more containers"
"update:Update configuration of one or more containers"
"wait:Block until one or more containers stop, then print their exit codes"
)
_describe -t docker-container-commands "docker container command" _docker_container_subcommands
}
__docker_container_subcommand() {
local -a _command_args opts_help
local expl help="--help"
integer ret=1
opts_help=("(: -)--help[Print usage]")
case "$words[1]" in
(attach)
__docker_subcommand && ret=0
;;
(commit)
__docker_subcommand && ret=0
;;
(cp)
__docker_subcommand && ret=0
;;
(create)
__docker_subcommand && ret=0
;;
(diff)
__docker_subcommand && ret=0
;;
(exec)
__docker_subcommand && ret=0
;;
(export)
__docker_subcommand && ret=0
;;
(inspect)
__docker_subcommand && ret=0
;;
(kill)
__docker_subcommand && ret=0
;;
(logs)
__docker_subcommand && ret=0
;;
(ls|list)
words[1]="ps"
__docker_subcommand && ret=0
;;
(pause)
__docker_subcommand && ret=0
;;
(port)
__docker_subcommand && ret=0
;;
(prune)
# @TODO
;;
(rename)
__docker_subcommand && ret=0
;;
(restart)
__docker_subcommand && ret=0
;;
(rm)
__docker_subcommand && ret=0
;;
(run)
__docker_subcommand && ret=0
;;
(start)
__docker_subcommand && ret=0
;;
(stats)
__docker_subcommand && ret=0
;;
(stop)
__docker_subcommand && ret=0
;;
(top)
__docker_subcommand && ret=0
;;
(unpause)
__docker_subcommand && ret=0
;;
(update)
__docker_subcommand && ret=0
;;
(wait)
__docker_subcommand && ret=0
;;
(help)
_arguments $(__docker_arguments) ":subcommand:__docker_container_commands" && ret=0
;;
esac
return ret
}
# EO container
# BO network
__docker_network_complete_ls_filters() {
@ -1418,7 +1546,7 @@ __docker_commands() {
then
local -a lines
lines=(${(f)"$(_call_program commands docker 2>&1)"})
_docker_subcommands=(${${${lines[$((${lines[(i)Commands:]} + 1)),${lines[(I) *]}]}## #}/ ##/:})
_docker_subcommands=(${${${(M)${lines[$((${lines[(i)*Commands:]} + 1)),-1]}:# *}## #}/ ##/:})
_docker_subcommands=($_docker_subcommands 'daemon:Enable daemon mode' 'help:Show help for a command')
(( $#_docker_subcommands > 2 )) && _store_cache docker_subcommands _docker_subcommands
fi
@ -1550,6 +1678,23 @@ __docker_subcommand() {
"($help -):container:__docker_complete_containers" \
"($help -): :__docker_repositories_with_tags" && ret=0
;;
(container)
local curcontext="$curcontext" state
_arguments $(__docker_arguments) \
$opts_help \
"($help -): :->command" \
"($help -)*:: :->option-or-argument" && ret=0
case $state in
(command)
__docker_container_commands && ret=0
;;
(option-or-argument)
curcontext=${curcontext%:*:*}:docker-${words[-1]}:
__docker_container_subcommand && ret=0
;;
esac
;;
(cp)
_arguments $(__docker_arguments) \
$opts_help \