198 lines
		
	
	
		
			4.2 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
			
		
		
	
	
			198 lines
		
	
	
		
			4.2 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
| #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
 | |
| 
 |