From 7105e37ef09ff890f7eca3e64d48b8b7ff94a494 Mon Sep 17 00:00:00 2001
From: DemonKiller <55846983+demonkillerr@users.noreply.github.com>
Date: Sun, 8 Oct 2023 14:27:55 +0100
Subject: [PATCH] feat(rtx) Added new polyglot runtime manager (asdf rust
 clone) (#11932)

* add readme.md for rtx
* add rtx plugin
* update install info
* remove redundant slashes
---
 plugins/rtx/README.md      | 30 ++++++++++++++++++++++++++++++
 plugins/rtx/rtx.plugin.zsh | 30 ++++++++++++++++++++++++++++++
 2 files changed, 60 insertions(+)
 create mode 100644 plugins/rtx/README.md
 create mode 100644 plugins/rtx/rtx.plugin.zsh

diff --git a/plugins/rtx/README.md b/plugins/rtx/README.md
new file mode 100644
index 000000000..c6436d3a7
--- /dev/null
+++ b/plugins/rtx/README.md
@@ -0,0 +1,30 @@
+## rtx
+
+
+Adds integration with [rtx](https://github.com/jdx/rtx), a runtime executor compatible with npm,  nodenv, pyenv, etc. rtx is written in rust and is very fast. 20x-200x faster than asdf. With that being said, rtx is compatible with asdf plugins and .tool-versions files. It can be used as a drop-in replacement.
+
+### Installation
+
+1. [Download & install rtx](https://github.com/jdx/rtx#installation) by running the following:
+
+  ```
+  curl https://rtx.pub/install.sh | sh
+  ```
+
+
+2. [Enable rtx](https://github.com/jdx/rtx#quickstart) by adding it to your `plugins` definition in `~/.zshrc`.
+
+  ```
+  plugins=(rtx)
+  ```
+
+### Usage
+
+See the [rtx readme](https://github.com/jdx/rtx#table-of-contents) for information on how to use rtx. Here are a few examples:
+
+```
+rtx install node         Install the current version specified in .tool-versions/.rtx.toml
+rtx use -g node@system   Use system node as global default
+rtx install node@20.0.0  Install a specific version number
+rtx use -g node@20       Use node-20.x as global default
+```
diff --git a/plugins/rtx/rtx.plugin.zsh b/plugins/rtx/rtx.plugin.zsh
new file mode 100644
index 000000000..aaccaf015
--- /dev/null
+++ b/plugins/rtx/rtx.plugin.zsh
@@ -0,0 +1,30 @@
+# 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
+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
+fi