summaryrefslogtreecommitdiff
path: root/plugins/docker/_docker
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/docker/_docker')
-rw-r--r--plugins/docker/_docker356
1 files changed, 356 insertions, 0 deletions
diff --git a/plugins/docker/_docker b/plugins/docker/_docker
new file mode 100644
index 000000000..28568a6e5
--- /dev/null
+++ b/plugins/docker/_docker
@@ -0,0 +1,356 @@
+#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