浏览代码

refactor(plugins): generate completion functions in the background

Marc Cornellà 2 年之前
父节点
当前提交
49bae43f62
共有 5 个文件被更改,包括 57 次插入62 次删除
  1. 1 1
      plugins/cargo/cargo.plugin.zsh
  2. 19 20
      plugins/deno/deno.plugin.zsh
  3. 18 20
      plugins/fnm/fnm.plugin.zsh
  4. 18 20
      plugins/gh/gh.plugin.zsh
  5. 1 1
      plugins/rustup/rustup.plugin.zsh

+ 1 - 1
plugins/cargo/cargo.plugin.zsh

@@ -7,7 +7,7 @@ print ${(%):-'Please update your .zshrc to use the `%Brust%b` plugin instead.%f'
 0="${${ZERO:-${0:#$ZSH_ARGZERO}}:-${(%):-%N}}"
 0="${${(M)0:#/*}:-$PWD/$0}"
 # Remove old generated completion file
-command rm -f "${0:A:h}/_cargo"
+command rm -f "${0:A:h}/_cargo" "$ZSH_CACHE_DIR/cargo_version"
 
 (( ${fpath[(Ie)$ZSH/plugins/rust]} )) || {
   fpath=("$ZSH/plugins/rust" $fpath)

+ 19 - 20
plugins/deno/deno.plugin.zsh

@@ -12,30 +12,29 @@ alias dts='deno test'
 alias dup='deno upgrade'
 
 # COMPLETION FUNCTION
-if (( $+commands[deno] )); then
-  # Handle $0 according to the standard:
-  # https://zdharma-continuum.github.io/Zsh-100-Commits-Club/Zsh-Plugin-Standard.html
-  0="${${ZERO:-${0:#$ZSH_ARGZERO}}:-${(%):-%N}}"
-  0="${${(M)0:#/*}:-$PWD/$0}"
-
-  # remove old generated completion file
-  command rm -f "${0:A:h}/_deno"
-
-  ver="$(deno --version)"
-  ver_file="$ZSH_CACHE_DIR/deno_version"
-  comp_file="$ZSH_CACHE_DIR/completions/_deno"
+if (( ! $+commands[deno] )); then
+  return
+fi
 
-  mkdir -p "${comp_file:h}"
-  (( ${fpath[(Ie)${comp_file:h}]} )) || fpath=("${comp_file:h}" $fpath)
+# TODO: 2021-12-28: remove this block
+# Handle $0 according to the standard:
+# https://zdharma-continuum.github.io/Zsh-100-Commits-Club/Zsh-Plugin-Standard.html
+0="${${ZERO:-${0:#$ZSH_ARGZERO}}:-${(%):-%N}}"
+0="${${(M)0:#/*}:-$PWD/$0}"
+# Remove old generated files
+command rm -f "${0:A:h}/_deno" "$ZSH_CACHE_DIR/deno_version"
 
-  if [[ ! -f "$comp_file" || ! -f "$ver_file" || "$ver" != "$(< "$ver_file")" ]]; then
-    deno completions zsh >| "$comp_file"
-    echo "$ver" >| "$ver_file"
-  fi
+# TODO: 2021-12-28: remove this bit of code as it exists in oh-my-zsh.sh
+# Add completions folder in $ZSH_CACHE_DIR
+command mkdir -p "$ZSH_CACHE_DIR/completions"
+(( ${fpath[(Ie)"$ZSH_CACHE_DIR/completions"]} )) || fpath=("$ZSH_CACHE_DIR/completions" $fpath)
 
+# If the completion file doesn't exist yet, we need to autoload it and
+# bind it to `deno`. Otherwise, compinit will have already done that.
+if [[ ! -f "$ZSH_CACHE_DIR/completions/_deno" ]]; then
   declare -A _comps
   autoload -Uz _deno
   _comps[deno]=_deno
-
-  unset ver ver_file comp_file
 fi
+
+deno completions zsh >| "$ZSH_CACHE_DIR/completions/_deno" &|

+ 18 - 20
plugins/fnm/fnm.plugin.zsh

@@ -1,28 +1,26 @@
-if (( $+commands[fnm] )); then
-  # Handle $0 according to the standard:
-  # https://zdharma-continuum.github.io/Zsh-100-Commits-Club/Zsh-Plugin-Standard.html
-  0="${${ZERO:-${0:#$ZSH_ARGZERO}}:-${(%):-%N}}"
-  0="${${(M)0:#/*}:-$PWD/$0}"
-
-  # remove old generated completion file
-  command rm -f "${0:A:h}/_fnm"
-
-  ver="$(fnm --version)"
-  ver_file="$ZSH_CACHE_DIR/fnm_version"
-  comp_file="$ZSH_CACHE_DIR/completions/_fnm"
+if (( ! $+commands[fnm] )); then
+  return
+fi
 
-  mkdir -p "${comp_file:h}"
-  (( ${fpath[(Ie)${comp_file:h}]} )) || fpath=("${comp_file:h}" $fpath)
+# TODO: 2021-12-28: remove this block
+# Handle $0 according to the standard:
+# https://zdharma-continuum.github.io/Zsh-100-Commits-Club/Zsh-Plugin-Standard.html
+0="${${ZERO:-${0:#$ZSH_ARGZERO}}:-${(%):-%N}}"
+0="${${(M)0:#/*}:-$PWD/$0}"
+# remove old generated files
+command rm -f "${0:A:h}/_fnm" "$ZSH_CACHE_DIR/fnm_version"
 
-  if [[ ! -f "$comp_file" || ! -f "$ver_file" || "$ver" != "$(< "$ver_file")" ]]; then
-    fnm completions --shell=zsh >| "$comp_file"
-    echo "$ver" >| "$ver_file"
-  fi
+# TODO: 2021-12-28: remove this bit of code as it exists in oh-my-zsh.sh
+# Add completions folder in $ZSH_CACHE_DIR
+command mkdir -p "$ZSH_CACHE_DIR/completions"
+(( ${fpath[(Ie)"$ZSH_CACHE_DIR/completions"]} )) || fpath=("$ZSH_CACHE_DIR/completions" $fpath)
 
+# If the completion file doesn't exist yet, we need to autoload it and
+# bind it to `fnm`. Otherwise, compinit will have already done that.
+if [[ ! -f "$ZSH_CACHE_DIR/completions/_fnm" ]]; then
   declare -A _comps
   autoload -Uz _fnm
   _comps[fnm]=_fnm
-
-  unset ver ver_file comp_file
 fi
 
+fnm completions --shell=zsh >| "$ZSH_CACHE_DIR/completions/_fnm" &|

+ 18 - 20
plugins/gh/gh.plugin.zsh

@@ -1,29 +1,27 @@
 # Autocompletion for the GitHub CLI (gh).
-if (( $+commands[gh] )); then
-  # Handle $0 according to the standard:
-  # # https://zdharma-continuum.github.io/Zsh-100-Commits-Club/Zsh-Plugin-Standard.html
-  0="${${ZERO:-${0:#$ZSH_ARGZERO}}:-${(%):-%N}}"
-  0="${${(M)0:#/*}:-$PWD/$0}"
-
-  # remove old generated completion file
-  command rm -f "${0:A:h}/_gh"
-
-  ver="$(gh --version)"
-  ver_file="$ZSH_CACHE_DIR/gh_version"
-  comp_file="$ZSH_CACHE_DIR/completions/_gh"
+if (( ! $+commands[gh] )); then
+  return
+fi
 
-  mkdir -p "${comp_file:h}"
-  (( ${fpath[(Ie)${comp_file:h}]} )) || fpath=("${comp_file:h}" $fpath)
+# TODO: 2021-12-28: remove this block
+# Handle $0 according to the standard:
+# https://zdharma-continuum.github.io/Zsh-100-Commits-Club/Zsh-Plugin-Standard.html
+0="${${ZERO:-${0:#$ZSH_ARGZERO}}:-${(%):-%N}}"
+0="${${(M)0:#/*}:-$PWD/$0}"
+# Remove old generated files
+command rm -f "${0:A:h}/_gh" "$ZSH_CACHE_DIR/gh_version"
 
-  if [[ ! -f "$comp_file" || ! -f "$ver_file" || "$ver" != "$(< "$ver_file")" ]]; then
-    gh completion --shell zsh >| "$comp_file"
-    echo "$ver" >| "$ver_file"
-  fi
+# TODO: 2021-12-28: remove this bit of code as it exists in oh-my-zsh.sh
+# Add completions folder in $ZSH_CACHE_DIR
+command mkdir -p "$ZSH_CACHE_DIR/completions"
+(( ${fpath[(Ie)"$ZSH_CACHE_DIR/completions"]} )) || fpath=("$ZSH_CACHE_DIR/completions" $fpath)
 
+# If the completion file doesn't exist yet, we need to autoload it and
+# bind it to `gh`. Otherwise, compinit will have already done that.
+if [[ ! -f "$ZSH_CACHE_DIR/completions/_gh" ]]; then
   declare -A _comps
   autoload -Uz _gh
   _comps[gh]=_gh
-
-  unset ver ver_file comp_file
 fi
 
+gh completion --shell zsh >| "$ZSH_CACHE_DIR/completions/_gh" &|

+ 1 - 1
plugins/rustup/rustup.plugin.zsh

@@ -7,7 +7,7 @@ print ${(%):-'Please update your .zshrc to use the `%Brust%b` plugin instead.%f'
 0="${${ZERO:-${0:#$ZSH_ARGZERO}}:-${(%):-%N}}"
 0="${${(M)0:#/*}:-$PWD/$0}"
 # Remove old generated completion file
-command rm -f "${0:A:h}/_rustup"
+command rm -f "${0:A:h}/_rustup" "$ZSH_CACHE_DIR/rustup_version"
 
 (( ${fpath[(Ie)$ZSH/plugins/rust]} )) || {
   fpath=("$ZSH/plugins/rust" $fpath)