Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #2028 from AeonAxan/master
Add Docker Autocompleteion
- Loading branch information
Showing
2 changed files
with
309 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,19 @@ | ||
## Docker autocomplete plugin | ||
|
||
- Adds autocomplete options for all docker commands. | ||
- Will also show containerIDs and Image names where applicable | ||
|
||
####Shows help for all commands | ||
![General Help](http://i.imgur.com/tUBO9jh.png "Help for all commands") | ||
|
||
|
||
####Shows your downloaded images where applicable | ||
![Images](http://i.imgur.com/R8ZsWO1.png "Images") | ||
|
||
|
||
####Shows your running containers where applicable | ||
![Containers](http://i.imgur.com/WQtbheg.png "Containers") | ||
|
||
|
||
|
||
Maintainer : Ahmed Azaan ([@aeonazaan](https://twitter.com/aeonazaan)) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,290 @@ | ||
#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 |