mirror of https://github.com/docker/cli.git
Add zsh completion for 'docker network'
Signed-off-by: Steve Durrheimer <s.durrheimer@gmail.com>
This commit is contained in:
parent
0095e6fc23
commit
cbc9cbde21
|
@ -183,6 +183,99 @@ __docker_search() {
|
||||||
_wanted dockersearch expl 'available images' compadd -a result
|
_wanted dockersearch expl 'available images' compadd -a result
|
||||||
}
|
}
|
||||||
|
|
||||||
|
__docker_networks() {
|
||||||
|
[[ $PREFIX = -* ]] && return 1
|
||||||
|
integer ret=1
|
||||||
|
declare -a lines networks
|
||||||
|
|
||||||
|
lines=(${(f)"$(_call_program commands docker $docker_options network ls)"})
|
||||||
|
|
||||||
|
# Parse header line to find columns
|
||||||
|
local i=1 j=1 k header=${lines[1]}
|
||||||
|
declare -A begin end
|
||||||
|
while (( j < ${#header} - 1 )); do
|
||||||
|
i=$(( j + ${${header[$j,-1]}[(i)[^ ]]} - 1 ))
|
||||||
|
j=$(( i + ${${header[$i,-1]}[(i) ]} - 1 ))
|
||||||
|
k=$(( j + ${${header[$j,-1]}[(i)[^ ]]} - 2 ))
|
||||||
|
begin[${header[$i,$((j-1))]}]=$i
|
||||||
|
end[${header[$i,$((j-1))]}]=$k
|
||||||
|
done
|
||||||
|
end[${header[$i,$((j-1))]}]=-1
|
||||||
|
lines=(${lines[2,-1]})
|
||||||
|
|
||||||
|
# Network ID
|
||||||
|
local line s
|
||||||
|
for line in $lines; do
|
||||||
|
s="${line[${begin[NETWORK ID]},${end[NETWORK ID]}]%% ##}"
|
||||||
|
s="$s:${(l:7:: :::)${${line[${begin[DRIVER]},${end[DRIVER]}]}%% ##}}"
|
||||||
|
networks=($networks $s)
|
||||||
|
done
|
||||||
|
|
||||||
|
# Names
|
||||||
|
for line in $lines; do
|
||||||
|
s="${line[${begin[NAME]},${end[NAME]}]%% ##}"
|
||||||
|
s="$s:${(l:7:: :::)${${line[${begin[DRIVER]},${end[DRIVER]}]}%% ##}}"
|
||||||
|
networks=($networks $s)
|
||||||
|
done
|
||||||
|
|
||||||
|
_describe -t networks-list "networks" networks && ret=0
|
||||||
|
return ret
|
||||||
|
}
|
||||||
|
|
||||||
|
__docker_network_commands() {
|
||||||
|
local -a _docker_network_subcommands
|
||||||
|
_docker_network_subcommands=(
|
||||||
|
"connect:onnects a container to a network"
|
||||||
|
"create:Creates a new network with a name specified by the user"
|
||||||
|
"disconnect:Disconnects a container from a network"
|
||||||
|
"inspect:Displays detailed information on a network"
|
||||||
|
"ls:Lists all the networks created by the user"
|
||||||
|
"rm:Deletes a network"
|
||||||
|
)
|
||||||
|
_describe -t docker-network-commands "docker network command" _docker_network_subcommands
|
||||||
|
}
|
||||||
|
|
||||||
|
__docker_network_subcommand() {
|
||||||
|
local -a _command_args opts_help
|
||||||
|
local expl help="--help"
|
||||||
|
integer ret=1
|
||||||
|
|
||||||
|
opts_help=("(: -)--help[Print usage]")
|
||||||
|
|
||||||
|
case "$words[1]" in
|
||||||
|
(connect|disconnect)
|
||||||
|
_arguments \
|
||||||
|
$opts_help \
|
||||||
|
"($help -)1:network:__docker_networks" \
|
||||||
|
"($help -)2:containers:__docker_runningcontainers" && ret=0
|
||||||
|
;;
|
||||||
|
(create)
|
||||||
|
_arguments -A '-*' \
|
||||||
|
$opts_help \
|
||||||
|
"($help -d --driver)"{-d,--driver=}"[Driver to manage the Network]:driver:(null host bridge overlay)" \
|
||||||
|
"($help -)1:Network Name: " && ret=0
|
||||||
|
;;
|
||||||
|
(inspect|rm)
|
||||||
|
_arguments \
|
||||||
|
$opts_help \
|
||||||
|
"($help -):network:__docker_networks" && ret=0
|
||||||
|
;;
|
||||||
|
(ls)
|
||||||
|
_arguments \
|
||||||
|
$opts_help \
|
||||||
|
"($help -l --latest)"{-l,--latest}"[Show the latest network created]" \
|
||||||
|
"($help)-n=-[Show n last created networks]:Number of networks: " \
|
||||||
|
"($help)--no-trunc[Do not truncate the output]" \
|
||||||
|
"($help -q --quiet)"{-q,--quiet}"[Only display numeric IDs]" && ret=0
|
||||||
|
;;
|
||||||
|
(help)
|
||||||
|
_arguments ":subcommand:__docker_network_commands" && ret=0
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
return ret
|
||||||
|
}
|
||||||
|
|
||||||
__docker_volumes() {
|
__docker_volumes() {
|
||||||
[[ $PREFIX = -* ]] && return 1
|
[[ $PREFIX = -* ]] && return 1
|
||||||
integer ret=1
|
integer ret=1
|
||||||
|
@ -244,7 +337,7 @@ __docker_volume_subcommand() {
|
||||||
(inspect)
|
(inspect)
|
||||||
_arguments \
|
_arguments \
|
||||||
$opts_help \
|
$opts_help \
|
||||||
"($help -f --format=-)"{-f,--format=-}"[Format the output using the given go template]:template: " \
|
"($help -f --format)"{-f,--format=-}"[Format the output using the given go template]:template: " \
|
||||||
"($help -)1:volume:__docker_volumes" && ret=0
|
"($help -)1:volume:__docker_volumes" && ret=0
|
||||||
;;
|
;;
|
||||||
(ls)
|
(ls)
|
||||||
|
@ -335,7 +428,7 @@ __docker_subcommand() {
|
||||||
"($help)*--lxc-conf=-[Add custom lxc options]:lxc options: "
|
"($help)*--lxc-conf=-[Add custom lxc options]:lxc options: "
|
||||||
"($help)--mac-address=-[Container MAC address]:MAC address: "
|
"($help)--mac-address=-[Container MAC address]:MAC address: "
|
||||||
"($help)--name=-[Container name]:name: "
|
"($help)--name=-[Container name]:name: "
|
||||||
"($help)--net=-[Network mode]:network mode:(bridge none container host)"
|
"($help)--net=-[Connect a container to a network]:network mode:(bridge none container host)"
|
||||||
"($help)--oom-kill-disable[Disable OOM Killer]"
|
"($help)--oom-kill-disable[Disable OOM Killer]"
|
||||||
"($help -P --publish-all)"{-P,--publish-all}"[Publish all exposed ports]"
|
"($help -P --publish-all)"{-P,--publish-all}"[Publish all exposed ports]"
|
||||||
"($help)*"{-p,--publish=-}"[Expose a container's port to the host]:port:_ports"
|
"($help)*"{-p,--publish=-}"[Expose a container's port to the host]:port:_ports"
|
||||||
|
@ -605,6 +698,23 @@ __docker_subcommand() {
|
||||||
"($help)--tail=-[Output the last K lines]:lines:(1 10 20 50 all)" \
|
"($help)--tail=-[Output the last K lines]:lines:(1 10 20 50 all)" \
|
||||||
"($help -)*:containers:__docker_containers" && ret=0
|
"($help -)*:containers:__docker_containers" && ret=0
|
||||||
;;
|
;;
|
||||||
|
(network)
|
||||||
|
local curcontext="$curcontext" state
|
||||||
|
_arguments \
|
||||||
|
$opts_help \
|
||||||
|
"($help -): :->command" \
|
||||||
|
"($help -)*:: :->option-or-argument" && ret=0
|
||||||
|
|
||||||
|
case $state in
|
||||||
|
(command)
|
||||||
|
__docker_network_commands && ret=0
|
||||||
|
;;
|
||||||
|
(option-or-argument)
|
||||||
|
curcontext=${curcontext%:*:*}:docker-${words[-1]}:
|
||||||
|
__docker_network_subcommand && ret=0
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
;;
|
||||||
(pause|unpause)
|
(pause|unpause)
|
||||||
_arguments \
|
_arguments \
|
||||||
$opts_help \
|
$opts_help \
|
||||||
|
@ -750,7 +860,7 @@ __docker_subcommand() {
|
||||||
__docker_volume_commands && ret=0
|
__docker_volume_commands && ret=0
|
||||||
;;
|
;;
|
||||||
(option-or-argument)
|
(option-or-argument)
|
||||||
curcontext=${curcontext%:*:*}:docker-$words[-1]:
|
curcontext=${curcontext%:*:*}:docker-${words[-1]}:
|
||||||
__docker_volume_subcommand && ret=0
|
__docker_volume_subcommand && ret=0
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|
Loading…
Reference in New Issue