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