123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290 |
- #compdef docker
- # Docker autocompletion for oh-my-zsh
- # Requires: Docker installed
- # Author : Azaan (@aeonazaan)
- # ----- 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() {
- __docker_containers
- }
- __build() {
- _arguments \
- '-q=false[Suppress verbose build output]' \
- '-t="[fuck to be applied to the resulting image in case of success]' \
- '*:files:_files'
- }
- __commit() {
- _arguments \
- '-author="[Author]' \
- '-m="[Commit message]' \
- '-run="[Config automatically applied when the image is run.\n]'
- __docker_containers
- }
- __diff() {
- __docker_containers
- }
- __export() {
- __docker_containers
- }
- __history() {
- __docker_images
- }
- __images() {
- _arguments \
- '-a[show all images]' \
- '-notrunc[dont truncate output]' \
- '-q[only show numeric IDs]' \
- '-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
- }
- __login() {
- _arguments \
- '-e="[email]' \
- '-p="[password]' \
- '-u="[username]' \
- }
- __logs() {
- __docker_containers
- }
- __port() {
- __docker_containers
- }
- __top() {
- __docker_containers
- }
- __ps() {
- _arguments \
- '-a[Show all containers. Only running containers are shown by default.]' \
- '-beforeId="[Show only container created before Id, include non-running ones.]' \
- '-l[Show only the latest created container, include non-running ones.]' \
- '-n=[Show n last created containers, include non-running ones.]' \
- '-notrurrrrnc[Dont truncate output]' \
- '-q[Only display numeric IDs]' \
- '-s[Display sizes]' \
- '-sinceId="[Show only containers created since Id, include non-running ones.]'
- }
- __pull() {
- _arguments '-t="[Download tagged image in repository]'
- }
- __push() {
- }
- __restart() {
- _arguments '-t=[number of seconds to try to stop before killing]'
- __docker_containers
- }
- __rm() {
- _arguments '-v[Remove the volumes associated to the container]'
- __docker_containers
- }
- __rmi() {
- __docker_images
- }
- __run() {
- _arguments \
- '-a=[Attach to stdin, stdout or stderr.]' \
- '-c=[CPU shares (relative weight)]' \
- '-d[Detached mode: leave the container running in the background]' \
- '-dns=[Set custom dns servers]' \
- '-e=[Set environment variables]' \
- '-entrypoint="[Overwrite the default entrypoint of the image]' \
- '-h="[Container host name]' \
- '-i[Keep stdin open even if not attached]' \
- '-m=[Memory limit (in bytes)]' \
- '-p=[Expose a containers port to the host (use docker port to see the actual mapping)]' \
- '-t[Allocate a pseudo-tty]' \
- '-u="[Username or UID]' \
- '-v=[Bind mount a volume (e.g. from the host: -v /host:/container, from docker: -v /container)]' \
- '-volumes-from="[Mount volumes from the specified container]'
- __docker_images
- }
- __search() {
- _arguments '-notrunc[Dont truncate output]'
- }
- __start() {
- __docker_containers
- }
- __stop() {
- _arguments '-t=[number of seconds to try to stop before killing]'
- __docker_containers
- }
- __tag() {
- _arguments '-f[Force]'
- __docker_images
- }
- __version() {
- }
- __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"
- "diff":"Inspect changes on a container's filesystem"
- "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"
- "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"
- "top":"Lookup the running processes of a container"
- "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"
- "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"
- "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)
- __docker_containers ;;
- build)
- __build ;;
- commit)
- __commit ;;
- diff)
- __diff ;;
- export)
- __export ;;
- history)
- __history ;;
- images)
- __images ;;
- import)
- __import ;;
- info)
- __info ;;
- insert)
- __insert ;;
- inspect)
- __inspect ;;
- kill)
- __kill ;;
- login)
- __login ;;
- logs)
- __logs ;;
- port)
- __port ;;
- top)
- __top ;;
- ps)
- __ps ;;
- pull)
- __pull ;;
- push)
- __push ;;
- restart)
- __restart ;;
- rm)
- __rm ;;
- rmi)
- __rmi ;;
- run)
- __run ;;
- search)
- __search ;;
- start)
- __start ;;
- stop)
- __stop ;;
- tag)
- __tag ;;
- version)
- __version ;;
- wait)
- __wait ;;
- esac
|