6bffaab2904d4bb37edad90e00b6f6e842d3811d

Author
Carlo Sala <carlosalag@protonmail.com>
Committer
GitHub <noreply@github.com>
Date

Message

fix(docker): only generate completion for docker >23 (#11754)

Diff

 1diff --git a/plugins/docker/docker.plugin.zsh b/plugins/docker/docker.plugin.zsh
 2index 06a191a10727ba15ce7e11cf997c51f0d7cb5bf7..e8aad9230864beee6ef50fef409c8ec8f4823fec 100644
 3--- a/plugins/docker/docker.plugin.zsh
 4+++ b/plugins/docker/docker.plugin.zsh
 5@@ -1,13 +1,3 @@
 6-# If the completion file doesn't exist yet, we need to autoload it and
 7-# bind it to `docker`. Otherwise, compinit will have already done that.
 8-if [[ ! -f "$ZSH_CACHE_DIR/completions/_docker" ]]; then
 9-  typeset -g -A _comps
10-  autoload -Uz _docker
11-  _comps[docker]=_docker
12-fi
13-
14-docker completion zsh >| "$ZSH_CACHE_DIR/completions/_docker" &|
15-
16 alias dbl='docker build'
17 alias dcin='docker container inspect'
18 alias dcls='docker container ls'
19@@ -41,3 +31,22 @@ alias dvls='docker volume ls'
20 alias dvprune='docker volume prune'
21 alias dxc='docker container exec'
22 alias dxcit='docker container exec -it'
23+
24+if (( ! $+commands[docker] )); then
25+  return
26+fi
27+
28+{
29+  # `docker completion` is only available from 23.0.0 on
30+  local _docker_version=$(docker version --format '{{.Client.Version}}' 2>/dev/null)
31+  if is-at-least 23.0.0 $_docker_version; then
32+    # If the completion file doesn't exist yet, we need to autoload it and
33+    # bind it to `docker`. Otherwise, compinit will have already done that.
34+    if [[ ! -f "$ZSH_CACHE_DIR/completions/_docker" ]]; then
35+      typeset -g -A _comps
36+      autoload -Uz _docker
37+      _comps[docker]=_docker
38+    fi
39+    docker completion zsh >| "$ZSH_CACHE_DIR/completions/_docker"
40+  fi
41+} &|