052a6dbd16045d37b07c4bad550077d5ccc82228

Author
Marc Cornellà <marc.cornella@live.com>
Committer
GitHub <noreply@github.com>
Date

Message

docker-machine: add official completion

Fixes #6962

Diff

This diff is truncated to protect this page.

  1diff --git a/plugins/docker-machine/_docker-machine b/plugins/docker-machine/_docker-machine
  2new file mode 100644
  3index 0000000000000000000000000000000000000000..7c19ba8e79621ed77bbd0999009b41fe826de4ff
  4--- /dev/null
  5+++ b/plugins/docker-machine/_docker-machine
  6@@ -0,0 +1,359 @@
  7+#compdef docker-machine
  8+# Description
  9+# -----------
 10+#  zsh completion for docker-machine
 11+#  https://github.com/leonhartX/docker-machine-zsh-completion
 12+# -------------------------------------------------------------------------
 13+# Version
 14+# -------
 15+#  0.1.1
 16+# -------------------------------------------------------------------------
 17+# Authors
 18+# -------
 19+#  * Ke Xu <leonhartx.k@gmail.com>
 20+# -------------------------------------------------------------------------
 21+# Inspiration
 22+# -----------
 23+#  * @sdurrheimer docker-compose-zsh-completion https://github.com/sdurrheimer/docker-compose-zsh-completion
 24+#  * @ilkka _docker-machine
 25+
 26+
 27+__docker-machine_get_hosts() {
 28+    [[ $PREFIX = -* ]] && return 1
 29+    local state
 30+    declare -a hosts
 31+    state=$1; shift
 32+    if [[ $state != all ]]; then
 33+        hosts=(${(f)"$(_call_program commands docker-machine ls -q --filter state=$state)"})
 34+    else
 35+        hosts=(${(f)"$(_call_program commands docker-machine ls -q)"})
 36+    fi
 37+    _describe 'host' hosts "$@" && ret=0
 38+    return ret
 39+}
 40+
 41+__docker-machine_hosts_with_state() {
 42+    declare -a hosts
 43+    hosts=(${(f)"$(_call_program commands docker-machine ls -f '{{.Name}}\:{{.DriverName}}\({{.State}}\)\ {{.URL}}')"})
 44+    _describe 'host' hosts
 45+}
 46+
 47+__docker-machine_hosts_all() {
 48+    __docker-machine_get_hosts all "$@"
 49+}
 50+
 51+__docker-machine_hosts_running() {
 52+    __docker-machine_get_hosts Running "$@"
 53+}
 54+
 55+__docker-machine_get_swarm() {
 56+    declare -a swarms
 57+    swarms=(${(f)"$(_call_program commands docker-machine ls -f {{.Swarm}} | awk '{print $1}')"})
 58+    _describe 'swarm' swarms
 59+}
 60+
 61+__docker-machine_hosts_and_files() {
 62+    _alternative "hosts:host:__docker-machine_hosts_all -qS ':'" 'files:files:_path_files'
 63+}
 64+
 65+__docker-machine_filters() {
 66+    [[ $PREFIX = -* ]] && return 1
 67+    integer ret=1
 68+
 69+    if compset -P '*='; then
 70+        case "${${words[-1]%=*}#*=}" in
 71+            (driver)
 72+                _describe -t driver-filter-opts "driver filter" opts_driver && ret=0
 73+                ;;
 74+            (swarm)
 75+                __docker-machine_get_swarm && ret=0
 76+                ;;
 77+            (state)
 78+                opts_state=('Running' 'Paused' 'Saved' 'Stopped' 'Stopping' 'Starting' 'Error')
 79+                _describe -t state-filter-opts "state filter" opts_state && ret=0
 80+                ;;
 81+            (name)
 82+                __docker-machine_hosts_all && ret=0
 83+                ;;
 84+            (label)
 85+                _message 'label' && ret=0
 86+                ;;
 87+            *)
 88+                _message 'value' && ret=0
 89+                ;;
 90+        esac
 91+    else
 92+        opts=('driver' 'swarm' 'state' 'name' 'label')
 93+        _describe -t filter-opts "filter" opts -qS "=" && ret=0
 94+    fi
 95+    return ret
 96+}
 97+
 98+__get_swarm_discovery() {
 99+    declare -a masters serivces
100+    local service
101+    services=()
102+    masters=($(docker-machine ls -f {{.Swarm}} |grep '(master)' |awk '{print $1}'))
103+    for master in $masters; do
104+         service=${${${(f)"$(_call_program commands docker-machine inspect -f '{{.HostOptions.SwarmOptions.Discovery}}:{{.Name}}' $master)"}/:/\\:}}
105+         services=($services $service)