summaryrefslogtreecommitdiff
path: root/plugins/asdf/asdf.plugin.zsh
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/asdf/asdf.plugin.zsh')
-rw-r--r--plugins/asdf/asdf.plugin.zsh39
1 files changed, 12 insertions, 27 deletions
diff --git a/plugins/asdf/asdf.plugin.zsh b/plugins/asdf/asdf.plugin.zsh
index 7635d20c3..913949888 100644
--- a/plugins/asdf/asdf.plugin.zsh
+++ b/plugins/asdf/asdf.plugin.zsh
@@ -1,30 +1,15 @@
-# Find where asdf should be installed
-ASDF_DIR="${ASDF_DIR:-$HOME/.asdf}"
-ASDF_COMPLETIONS="$ASDF_DIR/completions"
+(( ! $+commands[asdf] )) && return
-if [[ ! -f "$ASDF_DIR/asdf.sh" || ! -f "$ASDF_COMPLETIONS/_asdf" ]]; then
- # If not found, check for archlinux/AUR package (/opt/asdf-vm/)
- if [[ -f "/opt/asdf-vm/asdf.sh" ]]; then
- ASDF_DIR="/opt/asdf-vm"
- ASDF_COMPLETIONS="$ASDF_DIR"
- # If not found, check for Homebrew package
- elif (( $+commands[brew] )); then
- _ASDF_PREFIX="$(brew --prefix asdf)"
- ASDF_DIR="${_ASDF_PREFIX}/libexec"
- ASDF_COMPLETIONS="${_ASDF_PREFIX}/share/zsh/site-functions"
- unset _ASDF_PREFIX
- else
- return
- fi
-fi
+export ASDF_DATA_DIR="${ASDF_DATA_DIR:-$HOME/.asdf}"
+
+# Add shims to the front of the path, removing if already present.
+path=("$ASDF_DATA_DIR/shims" ${path:#$ASDF_DATA_DIR/shims})
-# Load command
-if [[ -f "$ASDF_DIR/asdf.sh" ]]; then
- source "$ASDF_DIR/asdf.sh"
- # Load completions
- if [[ -f "$ASDF_COMPLETIONS/_asdf" ]]; then
- fpath+=("$ASDF_COMPLETIONS")
- autoload -Uz _asdf
- compdef _asdf asdf # compdef is already loaded before loading plugins
- fi
+# If the completion file doesn't exist yet, we need to autoload it and
+# bind it to `asdf`. Otherwise, compinit will have already done that.
+if [[ ! -f "$ZSH_CACHE_DIR/completions/_asdf" ]]; then
+ typeset -g -A _comps
+ autoload -Uz _asdf
+ _comps[asdf]=_asdf
fi
+asdf completion zsh >| "$ZSH_CACHE_DIR/completions/_asdf" &|