summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorQuarticCat <QuarticCat@protonmail.com>2021-11-07 00:45:51 +0800
committerMarc Cornellà <hello@mcornella.com>2021-12-28 11:42:45 +0100
commita33ae92f4d78d4e4089d4d04a1d9f18bb11f39e1 (patch)
tree3853f8e4d75938f7b2a0b6a401a96b4176e10ebf
parent634296be3c985ed475ffbc1c0ffabe7ebd698808 (diff)
downloadzsh-a33ae92f4d78d4e4089d4d04a1d9f18bb11f39e1.tar.gz
zsh-a33ae92f4d78d4e4089d4d04a1d9f18bb11f39e1.tar.bz2
zsh-a33ae92f4d78d4e4089d4d04a1d9f18bb11f39e1.zip
refactor(rustup): generate completion file in the background (#10392)
Closes #10392
-rw-r--r--plugins/rustup/rustup.plugin.zsh34
1 files changed, 18 insertions, 16 deletions
diff --git a/plugins/rustup/rustup.plugin.zsh b/plugins/rustup/rustup.plugin.zsh
index c6efc1b13..af8cf03a2 100644
--- a/plugins/rustup/rustup.plugin.zsh
+++ b/plugins/rustup/rustup.plugin.zsh
@@ -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