Merge pull request #302 from ilkka/docker-compose
Completion for docker-compose
This commit is contained in:
commit
9759359e7a
|
@ -0,0 +1,197 @@
|
||||||
|
#compdef docker-compose
|
||||||
|
# ------------------------------------------------------------------------------
|
||||||
|
# Description
|
||||||
|
# -----------
|
||||||
|
#
|
||||||
|
# Completion script for Docker Compose (http://docs.docker.com/compose/).
|
||||||
|
# Adapted from boot2docker completion by hhatto (https://github.com/hhatto)
|
||||||
|
# and docker completion by @aeonazaan and @bobmaerten.
|
||||||
|
#
|
||||||
|
# ------------------------------------------------------------------------------
|
||||||
|
# Authors
|
||||||
|
# -------
|
||||||
|
#
|
||||||
|
# * ilkka (https://github.com/ilkka)
|
||||||
|
#
|
||||||
|
# ------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
# helper function for getting *.yml (compose) files
|
||||||
|
__yml_files_in_current_dir() {
|
||||||
|
_values 'YAML files' *.yml
|
||||||
|
}
|
||||||
|
|
||||||
|
# helper function for completing services in current project
|
||||||
|
__services() {
|
||||||
|
declare -a services_cmd
|
||||||
|
services_cmd=($(sed -n -E 's/^([^[:space:]][^:]*):/\1/p' docker-compose.yml | tr \\n ' '))
|
||||||
|
_describe 'services' services_cmd
|
||||||
|
}
|
||||||
|
|
||||||
|
# subcommands
|
||||||
|
local -a _docker_compose_cmds
|
||||||
|
|
||||||
|
_docker_compose_cmds=(
|
||||||
|
'build:Build or rebuild services' \
|
||||||
|
'help:Get help on a command' \
|
||||||
|
'kill:Kill containers' \
|
||||||
|
'logs:View output from containers' \
|
||||||
|
'port:Print the public port for a port binding' \
|
||||||
|
'ps:List containers' \
|
||||||
|
'pull:Pulls service images' \
|
||||||
|
'rm:Remove stopped containers' \
|
||||||
|
'run:Run a one-off command' \
|
||||||
|
'scale:Set number of containers for a service' \
|
||||||
|
'start:Start services' \
|
||||||
|
'stop:Stop services' \
|
||||||
|
'restart:Restart services' \
|
||||||
|
'up:Create and start containers'
|
||||||
|
)
|
||||||
|
|
||||||
|
# subcommand completion functions
|
||||||
|
__build() {
|
||||||
|
_arguments \
|
||||||
|
'--no-cache[Do not use cache when building image]'
|
||||||
|
__services
|
||||||
|
}
|
||||||
|
|
||||||
|
__help() {
|
||||||
|
_values 'Get help for subcommand' \
|
||||||
|
'build' \
|
||||||
|
'help' \
|
||||||
|
'kill' \
|
||||||
|
'logs' \
|
||||||
|
'port' \
|
||||||
|
'ps' \
|
||||||
|
'pull' \
|
||||||
|
'rm' \
|
||||||
|
'run' \
|
||||||
|
'scale' \
|
||||||
|
'start' \
|
||||||
|
'stop' \
|
||||||
|
'restart' \
|
||||||
|
'up'
|
||||||
|
}
|
||||||
|
|
||||||
|
__kill() {
|
||||||
|
_arguments \
|
||||||
|
'-s[Signal to send instead of SIGKILL]'
|
||||||
|
__services
|
||||||
|
}
|
||||||
|
|
||||||
|
__logs() {
|
||||||
|
_arguments \
|
||||||
|
'--no-color[Monochrome output]'
|
||||||
|
__services
|
||||||
|
}
|
||||||
|
|
||||||
|
__port() {
|
||||||
|
_arguments \
|
||||||
|
'--protocol:protocol:(tcp udp)' \
|
||||||
|
'--index[Index of container]:index'
|
||||||
|
__services
|
||||||
|
}
|
||||||
|
|
||||||
|
__ps() {
|
||||||
|
_arguments \
|
||||||
|
'-q[Only display IDs]'
|
||||||
|
__services
|
||||||
|
}
|
||||||
|
|
||||||
|
__pull() {
|
||||||
|
_arguments \
|
||||||
|
'--allow-insecure-ssl[Allow insecure connections to the docker registry]'
|
||||||
|
__services
|
||||||
|
}
|
||||||
|
|
||||||
|
__rm() {
|
||||||
|
_arguments \
|
||||||
|
"--force[Don't ask for confirmation]" \
|
||||||
|
'-v[Remove volumes]'
|
||||||
|
__services
|
||||||
|
}
|
||||||
|
|
||||||
|
__run() {
|
||||||
|
_arguments \
|
||||||
|
'--allow-insecure-ssl[Allow insecure connections to the docker registry]' \
|
||||||
|
'-d[Detached mode: Run container in the background, print new container name.]' \
|
||||||
|
'--entrypoint[Override the entrypoint of the image.]:command:()' \
|
||||||
|
'-e[Set an environment variable.]:key=val:()' \
|
||||||
|
"--no-deps[Don't start linked services.]" \
|
||||||
|
'--rm[Remove container after run. Ignored in detached mode.]' \
|
||||||
|
"--service-ports[Run command with the service's ports enabled and mapped to the host.]" \
|
||||||
|
'-T[Disable pseudo-tty allocation.]'
|
||||||
|
__services
|
||||||
|
}
|
||||||
|
|
||||||
|
__scale() {
|
||||||
|
__services
|
||||||
|
}
|
||||||
|
|
||||||
|
__start() {
|
||||||
|
__services
|
||||||
|
}
|
||||||
|
|
||||||
|
__stop() {
|
||||||
|
__services
|
||||||
|
}
|
||||||
|
|
||||||
|
__restart() {
|
||||||
|
__services
|
||||||
|
}
|
||||||
|
|
||||||
|
__up() {
|
||||||
|
_arguments \
|
||||||
|
'--allow-insecure-ssl[Allow insecure connections to the docker registry]' \
|
||||||
|
'-d[Detached mode: Run containers in the background, print new container names.]' \
|
||||||
|
'--no-color[Produce monochrome output.]' \
|
||||||
|
"--no-deps[Don't start linked services.]" \
|
||||||
|
"--no-recreate[If containers already exist, don't recreate them.]" \
|
||||||
|
"--no-build[Don't build an image, even if it's missing]"
|
||||||
|
__services
|
||||||
|
}
|
||||||
|
|
||||||
|
# common args
|
||||||
|
_arguments \
|
||||||
|
'--verbose[Show more output]' \
|
||||||
|
'--version[Print version and exit]' \
|
||||||
|
'--file[Specify an alternate compose file]:__yml_files_in_current_dir' \
|
||||||
|
'--project-name[Specify an alternate project name]:args' \
|
||||||
|
'*:: :->command'
|
||||||
|
|
||||||
|
# start machines!
|
||||||
|
if (( CURRENT == 1 )); then
|
||||||
|
_describe -t commands 'docker-compose command' _docker_compose_cmds
|
||||||
|
fi
|
||||||
|
|
||||||
|
local -a _command_args
|
||||||
|
case "$words[1]" in
|
||||||
|
build)
|
||||||
|
__build ;;
|
||||||
|
help)
|
||||||
|
__help ;;
|
||||||
|
kill)
|
||||||
|
__kill ;;
|
||||||
|
logs)
|
||||||
|
__logs ;;
|
||||||
|
port)
|
||||||
|
__port ;;
|
||||||
|
ps)
|
||||||
|
__ps ;;
|
||||||
|
pull)
|
||||||
|
__pull ;;
|
||||||
|
rm)
|
||||||
|
__rm ;;
|
||||||
|
run)
|
||||||
|
__run ;;
|
||||||
|
scale)
|
||||||
|
__scale ;;
|
||||||
|
start)
|
||||||
|
__start ;;
|
||||||
|
stop)
|
||||||
|
__stop ;;
|
||||||
|
restart)
|
||||||
|
__restart ;;
|
||||||
|
up)
|
||||||
|
__up ;;
|
||||||
|
esac
|
||||||
|
|
Loading…
Reference in New Issue