mirror of
				https://github.com/ohmyzsh/ohmyzsh.git
				synced 2024-05-11 05:55:17 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			357 lines
		
	
	
		
			10 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			357 lines
		
	
	
		
			10 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| #compdef docker
 | |
| 
 | |
| # Docker autocompletion for oh-my-zsh
 | |
| # Requires: Docker installed
 | |
| # Author: Azaan (@aeonazaan)
 | |
| # Updates: Bob Maerten (@bobmaerten) for Docker v0.9+
 | |
| 
 | |
| 
 | |
| # ----- Helper functions
 | |
| # Output a selectable list of all running docker containers
 | |
| __docker_containers() {
 | |
|     declare -a cont_cmd
 | |
|     cont_cmd=($(docker ps | awk 'NR>1{print $1":[CON("$1")"$2"("$3")]"}'))
 | |
|     _describe 'containers' cont_cmd
 | |
| }
 | |
| 
 | |
| # output a selectable list of all docker images
 | |
| __docker_images() {
 | |
|     declare -a img_cmd
 | |
|     img_cmd=($(docker images | awk 'NR>1{print $1}'))
 | |
|     _describe 'images' img_cmd
 | |
| }
 | |
| 
 | |
| # ----- Commands
 | |
| # Seperate function for each command, makes extension easier later
 | |
| # ---------------------------
 | |
| __attach() {
 | |
|     _arguments \
 | |
|         '--no-stdin[Do not attach stdin]' \
 | |
|         '--sig-proxy[Proxify all received signal to the process (even in non-tty mode)]'
 | |
|     __docker_containers
 | |
| }
 | |
| 
 | |
| __build() {
 | |
|     _arguments \
 | |
|         '--no-cache[Do not use cache when building the image]' \
 | |
|         '(-q,--quiet)'{-q,--quiet}'[Suppress the verbose output generated by the containers]' \
 | |
|         '--rm[Remove intermediate containers after a successful build]' \
 | |
|         '(-t,--tag=)'{-t,--tag=}'[Repository name (and optionally a tag) to be applied to the resulting image in case of success]' \
 | |
|         '*:files:_files'
 | |
| }
 | |
| 
 | |
| __commit() {
 | |
|     _arguments \
 | |
|         '(-a,--author=)'{-a,--author=}'[Author (eg. "John Hannibal Smith <hannibal@a-team.com>"]' \
 | |
|         '(-m,--message=)'{-m,--message=}'[Commit message]' \
 | |
|         '--run=[Config automatically applied when the image is run.]'
 | |
|     __docker_containers
 | |
| }
 | |
| 
 | |
| __cp() {
 | |
|     __docker_containers
 | |
| }
 | |
| 
 | |
| __diff() {
 | |
|     __docker_containers
 | |
| }
 | |
| 
 | |
| __events() {
 | |
|     _arguments \
 | |
|         '--since=[Show previously created events and then stream.]'
 | |
| }
 | |
| 
 | |
| __export() {
 | |
|    __docker_containers
 | |
| }
 | |
| 
 | |
| __history() {
 | |
|     _arguments \
 | |
|         '--no-trunc=[Don''t truncate output]' \
 | |
|         '(-q,--quiet)'{-q,--quiet}'[Only show numeric IDs]'
 | |
|     __docker_images
 | |
| }
 | |
| 
 | |
| __images() {
 | |
|     _arguments \
 | |
|         '(-a,--all)'{-a,--all}'[Show all images (by default filter out the intermediate images used to build)]' \
 | |
|         '--no-trunc[Don''t truncate output]' \
 | |
|         '(-q,--quiet=)'{-q,--quiet=}'[Only show numeric IDs]' \
 | |
|         '(-t,--tree=)'{-t,--tree=}'[Output graph in tree format]' \
 | |
|         '(-v,--viz=)'{-v,--viz=}'[Output graph in graphviz format]'
 | |
|     __docker_images
 | |
| }
 | |
| 
 | |
| __import() {
 | |
|     _arguments '*:files:_files'
 | |
| }
 | |
| 
 | |
| __info() {
 | |
|     # no arguments
 | |
| }
 | |
| 
 | |
| __insert() {
 | |
|     __docker_images
 | |
|     _arguments '*:files:_files'
 | |
| }
 | |
| 
 | |
| __inspect() {
 | |
|     __docker_images
 | |
|     __docker_containers
 | |
| }
 | |
| 
 | |
| __kill() {
 | |
|     __docker_containers
 | |
| }
 | |
| 
 | |
| __load() {
 | |
|     _arguments '*:files:_files'
 | |
| }
 | |
| 
 | |
| __login() {
 | |
|     _arguments \
 | |
|         '(-e,--email=)'{-e,-email=}'[Email]' \
 | |
|         '(-p,--password=)'{-p,-password=}'[Password]' \
 | |
|         '(-u,--username=)'{-u,-username=}'[Username]'
 | |
| }
 | |
| 
 | |
| __logs() {
 | |
|     _arguments \
 | |
|         '(-f,--follow)'{-f,-follow}'[Follow log output]'
 | |
|     __docker_containers
 | |
| }
 | |
| 
 | |
| __port() {
 | |
|     __docker_containers
 | |
| }
 | |
| 
 | |
| __top() {
 | |
|     __docker_containers
 | |
| }
 | |
| 
 | |
| __ps() {
 | |
|     _arguments \
 | |
|         '(-a,--all)'{-a,--all}'[Show all containers. Only running containers are shown by default.]' \
 | |
|         '--before-id=[Show only container created before Id, include non-running ones.]' \
 | |
|         '(-l,--latest)'{-l,--latest}'[Show only the latest created container, include non-running ones.]' \
 | |
|         '-n=[Show n last created containers, include non-running ones. default=-1.]' \
 | |
|         '--no-trunc[Don''t truncate output]' \
 | |
|         '(-q,--quiet)'{-q,--quiet}'[Only display numeric IDs]' \
 | |
|         '(-s,--size)'{-s,--size}'[Display sizes]' \
 | |
|         '--since-id=[Show only containers created since Id, include non-running ones.]'
 | |
| }
 | |
| 
 | |
| __pull() {
 | |
|     _arguments \
 | |
|         '(-t,--tag=)'{-t,--tag=}'[Download tagged image in repository]'
 | |
| }
 | |
| 
 | |
| __push() {
 | |
|     # no arguments
 | |
| }
 | |
| 
 | |
| __restart() {
 | |
|     _arguments \
 | |
|         '(-t,--time=)'{-t,--time=}'[Number of seconds to try to stop for before killing the container. Once killed it will then be restarted. Default=10]'
 | |
|     __docker_containers
 | |
| }
 | |
| 
 | |
| __rm() {
 | |
|     _arguments \
 | |
|         '(-f,--force=)'{-f,--force=}'[Force removal of running container]' \
 | |
|         '(-l,--link=)'{-l,--link=}'[Remove the specified link and not the underlying container]' \
 | |
|         '(-v,--volumes=)'{-v,--volumes=}'[Remove the volumes associated to the container]'
 | |
|     __docker_containers
 | |
| }
 | |
| 
 | |
| __rmi() {
 | |
|     _arguments \
 | |
|         '(-f,--force=)'{-f,--force=}'[Force]'
 | |
|     __docker_images
 | |
| }
 | |
| 
 | |
| __run() {
 | |
|     _arguments \
 | |
|         '(-P,--publish-all=)'{-P,--publish-all=}'[Publish all exposed ports to the host interfaces]' \
 | |
|         '(-a,--attach=)'{-a,--attach=}'[Attach to stdin, stdout or stderr.]' \
 | |
|         '(-c,--cpu-shares=)'{-c,--cpu-shares=}': CPU shares (relative weight)]' \
 | |
|         '--cidfile=[Write the container ID to the file]' \
 | |
|         '(-d,--detach=)'{-d,--detach=}'[Detached mode: Run container in the background, print new container id]' \
 | |
|         '--dns=[Set custom dns servers]' \
 | |
|         '(-e,--env=)'{-e,--env=}'[Set environment variables]' \
 | |
|         '--entrypoint=[Overwrite the default entrypoint of the image]' \
 | |
|         '--expose=[Expose a port from the container without publishing it to your host]' \
 | |
|         '(-h,--hostname=)'{-h,--hostname=}'[Container host name]' \
 | |
|         '(-i,--interactive=)'{-i,--interactive=}'[Keep stdin open even if not attached]' \
 | |
|         '--link=[Add link to another container (name:alias)]' \
 | |
|         '--lxc-conf=[Add custom lxc options -lxc-conf="lxc.cgroup.cpuset.cpus = 0,1"]' \
 | |
|         '(-m,--memory=)'{-m,--memory=}'[Memory limit (format: <number><optional unit>, where unit = b, k, m or g)]' \
 | |
|         '(-n,--networking=)'{-n,--networking=}'[Enable networking for this container]' \
 | |
|         '--name=[Assign a name to the container]' \
 | |
|         '(-p,--publish=)'{-p,--publish=}'[Publish a container''s port to the host (format: ip:hostPort:containerPort | ip::containerPort | hostPort:containerPort) (use "docker port" to see the actual mapping)]' \
 | |
|         '--privileged=[Give extended privileges to this container]' \
 | |
|         '--rm=[Automatically remove the container when it exits (incompatible with -d)]' \
 | |
|         '--sig-proxy=[Proxify all received signal to the process (even in non-tty mode)]' \
 | |
|         '(-t,--tty=)'{-t,--tty=}'[Allocate a pseudo-tty]' \
 | |
|         '(-u,--user=)'{-u,--user=}'[Username or UID]' \
 | |
|         '(-v,--volume=)'{-v,--volume=}'[Bind mount a volume (e.g. from the host: -v /host:/container, from docker: -v /container)]' \
 | |
|         '--volumes-from=[Mount volumes from the specified container(s)]' \
 | |
|         '(-w,--workdir=)'{-w,--workdir=}'[Working directory inside the container]'
 | |
|     __docker_images
 | |
| }
 | |
| 
 | |
| __search() {
 | |
|     _arguments \
 | |
|         '--no-trunc=[Don''t truncate output]' \
 | |
|         '-s,--stars=)'{-s,--stars=}'[Only displays with at least xxx stars]' \
 | |
|         '-t,--trusted=)'{-t,--trusted=}'[Only show trusted builds]'
 | |
| }
 | |
| 
 | |
| __save() {
 | |
|     __docker_images
 | |
| }
 | |
| 
 | |
| __start() {
 | |
|     _arguments \
 | |
|         '(-a,--attach=)'{-a,--attach=}'[Attach container''s stdout/stderr and forward all signals to the process]' \
 | |
|         '(-i,--interactive=)'{-i,--interactive=}'[Attach container''s stdin]'
 | |
|     __docker_containers
 | |
| }
 | |
| 
 | |
| __stop() {
 | |
|     _arguments \
 | |
|         '(-t,--time=)'{-t,--time=}'[Number of seconds to wait for the container to stop before killing it.]'
 | |
|     __docker_containers
 | |
| }
 | |
| 
 | |
| __tag() {
 | |
|     _arguments \
 | |
|         '(-f,--force=)'{-f,--force=}'[Force]'
 | |
|     __docker_images
 | |
| }
 | |
| 
 | |
| __version() {
 | |
|     # no arguments
 | |
| }
 | |
| 
 | |
| __wait() {
 | |
|     __docker_containers
 | |
| }
 | |
| 
 | |
| # end commands ---------
 | |
| # ----------------------
 | |
| 
 | |
| local -a _1st_arguments
 | |
| _1st_arguments=(
 | |
|     "attach":"Attach to a running container"
 | |
|     "build":"Build a container from a Dockerfile"
 | |
|     "commit":"Create a new image from a container's changes"
 | |
|     "cp":"Copy files/folders from the containers filesystem to the host path"
 | |
|     "diff":"Inspect changes on a container's filesystem"
 | |
|     "events":"Get real time events from the server"
 | |
|     "export":"Stream the contents of a container as a tar archive"
 | |
|     "history":"Show the history of an image"
 | |
|     "images":"List images"
 | |
|     "import":"Create a new filesystem image from the contents of a tarball"
 | |
|     "info":"Display system-wide information"
 | |
|     "insert":"Insert a file in an image"
 | |
|     "inspect":"Return low-level information on a container"
 | |
|     "kill":"Kill a running container"
 | |
|     "load":"Load an image from a tar archive"
 | |
|     "login":"Register or Login to the docker registry server"
 | |
|     "logs":"Fetch the logs of a container"
 | |
|     "port":"Lookup the public-facing port which is NAT-ed to PRIVATE_PORT"
 | |
|     "ps":"List containers"
 | |
|     "pull":"Pull an image or a repository from the docker registry server"
 | |
|     "push":"Push an image or a repository to the docker registry server"
 | |
|     "restart":"Restart a running container"
 | |
|     "rm":"Remove one or more containers"
 | |
|     "rmi":"Remove one or more images"
 | |
|     "run":"Run a command in a new container"
 | |
|     "save":"Save an image to a tar archive"
 | |
|     "search":"Search for an image in the docker index"
 | |
|     "start":"Start a stopped container"
 | |
|     "stop":"Stop a running container"
 | |
|     "tag":"Tag an image into a repository"
 | |
|     "top":"Lookup the running processes of a container"
 | |
|     "version":"Show the docker version information"
 | |
|     "wait":"Block until a container stops, then print its exit code"
 | |
| )
 | |
| 
 | |
| _arguments '*:: :->command'
 | |
| 
 | |
| if (( CURRENT == 1 )); then
 | |
|     _describe -t commands "docker command" _1st_arguments
 | |
|     return
 | |
| fi
 | |
| 
 | |
| local -a _command_args
 | |
| case "$words[1]" in
 | |
|     attach)
 | |
|        __attach ;;
 | |
|     build)
 | |
|         __build ;;
 | |
|     commit)
 | |
|         __commit ;;
 | |
|     cp)
 | |
|         __cp ;;
 | |
|     diff)
 | |
|         __diff ;;
 | |
|     events)
 | |
|         __events ;;
 | |
|     export)
 | |
|         __export ;;
 | |
|     history)
 | |
|         __history ;;
 | |
|     images)
 | |
|         __images ;;
 | |
|     import)
 | |
|         __import ;;
 | |
|     info)
 | |
|         __info ;;
 | |
|     insert)
 | |
|         __insert ;;
 | |
|     inspect)
 | |
|         __inspect ;;
 | |
|     kill)
 | |
|         __kill ;;
 | |
|     load)
 | |
|         __load ;;
 | |
|     login)
 | |
|         __login ;;
 | |
|     logs)
 | |
|         __logs ;;
 | |
|     port)
 | |
|         __port ;;
 | |
|     ps)
 | |
|         __ps ;;
 | |
|     pull)
 | |
|         __pull ;;
 | |
|     push)
 | |
|         __push ;;
 | |
|     restart)
 | |
|         __restart ;;
 | |
|     rm)
 | |
|         __rm ;;
 | |
|     rmi)
 | |
|         __rmi ;;
 | |
|     run)
 | |
|         __run ;;
 | |
|     save)
 | |
|         __save ;;
 | |
|     search)
 | |
|         __search ;;
 | |
|     start)
 | |
|         __start ;;
 | |
|     stop)
 | |
|         __stop ;;
 | |
|     tag)
 | |
|         __tag ;;
 | |
|     top)
 | |
|         __top ;;
 | |
|     version)
 | |
|         __version ;;
 | |
|     wait)
 | |
|         __wait ;;
 | |
| esac
 |