|
@@ -1,22 +1,24 @@
|
|
|
-if (( $+commands[rustup] )); then
|
|
|
- # remove old generated completion file
|
|
|
- command rm -f "${0:A:h}/_rustup"
|
|
|
-
|
|
|
- ver="$(rustup --version 2>/dev/null)"
|
|
|
- ver_file="$ZSH_CACHE_DIR/rustup_version"
|
|
|
- comp_file="$ZSH_CACHE_DIR/completions/_rustup"
|
|
|
+if (( ! $+commands[rustup] )); then
|
|
|
+ return
|
|
|
+fi
|
|
|
|
|
|
- mkdir -p "${comp_file:h}"
|
|
|
- (( ${fpath[(Ie)${comp_file:h}]} )) || fpath=("${comp_file:h}" $fpath)
|
|
|
+# Remove old generated completion file
|
|
|
+# TODO: 2021-09-15: remove this line
|
|
|
+command rm -f "${0:A:h}/_rustup"
|
|
|
|
|
|
- if [[ ! -f "$comp_file" || ! -f "$ver_file" || "$ver" != "$(< "$ver_file")" ]]; then
|
|
|
- rustup completions zsh >| "$comp_file"
|
|
|
- echo "$ver" >| "$ver_file"
|
|
|
- fi
|
|
|
+# Add completions/ folder in $ZSH_CACHE_DIR
|
|
|
+comp_file="$ZSH_CACHE_DIR/completions/_rustup"
|
|
|
+command mkdir -p "${comp_file:h}"
|
|
|
+(( ${fpath[(Ie)"$ZSH_CACHE_DIR/completions"]} )) || fpath=("$ZSH_CACHE_DIR/completions" $fpath)
|
|
|
|
|
|
- declare -A _comps
|
|
|
+# If the completion file doesn't exist yet, we need to autoload it and
|
|
|
+# bind it to `rustup`. Otherwise, compinit will have already done that
|
|
|
+if [[ ! -f "$comp_file" ]]; then
|
|
|
autoload -Uz _rustup
|
|
|
+ declare -A _comps
|
|
|
_comps[rustup]=_rustup
|
|
|
-
|
|
|
- unset ver ver_file comp_file
|
|
|
fi
|
|
|
+
|
|
|
+# Generate completion file in the background
|
|
|
+rustup completions zsh >| "$comp_file" &|
|
|
|
+unset comp_file
|