diff options
Diffstat (limited to '.config/zsh/oh-my-zsh/plugins/asdf')
| -rw-r--r-- | .config/zsh/oh-my-zsh/plugins/asdf/README.md | 32 | ||||
| -rw-r--r-- | .config/zsh/oh-my-zsh/plugins/asdf/asdf.plugin.zsh | 48 |
2 files changed, 80 insertions, 0 deletions
diff --git a/.config/zsh/oh-my-zsh/plugins/asdf/README.md b/.config/zsh/oh-my-zsh/plugins/asdf/README.md new file mode 100644 index 0000000..4af69a7 --- /dev/null +++ b/.config/zsh/oh-my-zsh/plugins/asdf/README.md @@ -0,0 +1,32 @@ +## asdf + +Adds integration with [asdf](https://github.com/asdf-vm/asdf), the extendable version manager, with support for Ruby, Node.js, Elixir, Erlang and more. + +### Installation + +1. [Download asdf](https://asdf-vm.com/guide/getting-started.html#_2-download-asdf) by running the following: + + ``` + git clone https://github.com/asdf-vm/asdf.git ~/.asdf + ``` + +2. [Enable asdf](https://asdf-vm.com/guide/getting-started.html#_3-install-asdf) by adding it to your `plugins` definition in `~/.zshrc`. + + ``` + plugins=(asdf) + ``` + +### Usage + +See the [asdf documentation](https://asdf-vm.com/guide/getting-started.html#_4-install-a-plugin) for information on how to use asdf: + +``` +asdf plugin add nodejs https://github.com/asdf-vm/asdf-nodejs.git +asdf install nodejs latest +asdf global nodejs latest +asdf local nodejs latest +``` + +### Maintainer + +- [@RobLoach](https://github.com/RobLoach) diff --git a/.config/zsh/oh-my-zsh/plugins/asdf/asdf.plugin.zsh b/.config/zsh/oh-my-zsh/plugins/asdf/asdf.plugin.zsh new file mode 100644 index 0000000..4367e8c --- /dev/null +++ b/.config/zsh/oh-my-zsh/plugins/asdf/asdf.plugin.zsh @@ -0,0 +1,48 @@ +if (( $+commands[asdf] )); then + export ASDF_DATA_DIR="${ASDF_DATA_DIR:-$HOME/.asdf}" + path=("$ASDF_DATA_DIR/shims" $path) + + # 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" &| + + return +fi + +# TODO:(2025-02-12): remove deprecated asdf <0.16 code + +# Find where asdf should be installed +ASDF_DIR="${ASDF_DIR:-$HOME/.asdf}" +ASDF_COMPLETIONS="$ASDF_DIR/completions" + +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 + +# 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 +fi |
