Browse Source

fix(rtx): fix `rtx` init procedure (#11949)

Marc Cornellà 1 year ago
parent
commit
30a8a5d3e2
1 changed files with 15 additions and 27 deletions
  1. 15 27
      plugins/rtx/rtx.plugin.zsh

+ 15 - 27
plugins/rtx/rtx.plugin.zsh

@@ -1,30 +1,18 @@
-# Find where rtx should be installed
-RTX_DIR="${RTX_DIR:-$HOME/.rtx}"
-RTX_COMPLETIONS="$RTX_DIR/completions"
-
-if [[ ! -f "$RTX_DIR/rtx.sh" || ! -f "$RTX_COMPLETIONS/_rtx" ]]; then
-  # If not found, check for archlinux/AUR package (/opt/rtx-vm/)
-  if [[ -f "/opt/rtx-vm/rtx.sh" ]]; then
-    RTX_DIR="/opt/rtx-vm"
-    RTX_COMPLETIONS="$RTX_DIR"
-  # If not found, check for Homebrew package
-  elif (( $+commands[brew] )); then
-    _RTX_PREFIX="$(brew --prefix rtx)"
-    RTX_DIR="${_RTX_PREFIX}/libexec"
-    RTX_COMPLETIONS="${_RTX_PREFIX}/share/zsh/site-functions"
-    unset _RTX_PREFIX
-  else
-    return
-  fi
+# rtx needs to be in $PATH
+if (( ! ${+commands[rtx]} )); then
+  return
 fi
 
-# Load command
-if [[ -f "$RTX_DIR/rtx.sh" ]]; then
-  source "$RTX_DIR/rtx.sh"
-  # Load completions
-  if [[ -f "$RTX_COMPLETIONS/_rtx" ]]; then
-    fpath+=("$RTX_COMPLETIONS")
-    autoload -Uz _rtx
-    compdef _rtx rtx # compdef is already loaded before loading plugins
-  fi
+# Load rtx hooks
+eval "$(rtx activate zsh)"
+
+# If the completion file doesn't exist yet, we need to autoload it and
+# bind it to `rtx`. Otherwise, compinit will have already done that.
+if [[ ! -f "$ZSH_CACHE_DIR/completions/_rtx" ]]; then
+  typeset -g -A _comps
+  autoload -Uz _rtx
+  _comps[rtx]=_rtx
 fi
+
+# Generate and load rtx completion
+rtx completion zsh >! "$ZSH_CACHE_DIR/completions/_rtx" &|