浏览代码

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

Carlo Sala 11 月之前
父节点
当前提交
6bffaab290
共有 1 个文件被更改,包括 19 次插入10 次删除
  1. 19 10
      plugins/docker/docker.plugin.zsh

+ 19 - 10
plugins/docker/docker.plugin.zsh

@@ -1,13 +1,3 @@
-# If the completion file doesn't exist yet, we need to autoload it and
-# bind it to `docker`. Otherwise, compinit will have already done that.
-if [[ ! -f "$ZSH_CACHE_DIR/completions/_docker" ]]; then
-  typeset -g -A _comps
-  autoload -Uz _docker
-  _comps[docker]=_docker
-fi
-
-docker completion zsh >| "$ZSH_CACHE_DIR/completions/_docker" &|
-
 alias dbl='docker build'
 alias dcin='docker container inspect'
 alias dcls='docker container ls'
@@ -41,3 +31,22 @@ alias dvls='docker volume ls'
 alias dvprune='docker volume prune'
 alias dxc='docker container exec'
 alias dxcit='docker container exec -it'
+
+if (( ! $+commands[docker] )); then
+  return
+fi
+
+{
+  # `docker completion` is only available from 23.0.0 on
+  local _docker_version=$(docker version --format '{{.Client.Version}}' 2>/dev/null)
+  if is-at-least 23.0.0 $_docker_version; then
+    # If the completion file doesn't exist yet, we need to autoload it and
+    # bind it to `docker`. Otherwise, compinit will have already done that.
+    if [[ ! -f "$ZSH_CACHE_DIR/completions/_docker" ]]; then
+      typeset -g -A _comps
+      autoload -Uz _docker
+      _comps[docker]=_docker
+    fi
+    docker completion zsh >| "$ZSH_CACHE_DIR/completions/_docker"
+  fi
+} &|