diff options
Diffstat (limited to 'plugins/asdf')
| -rw-r--r-- | plugins/asdf/README.md | 54 | ||||
| -rw-r--r-- | plugins/asdf/asdf.plugin.zsh | 39 |
2 files changed, 48 insertions, 45 deletions
diff --git a/plugins/asdf/README.md b/plugins/asdf/README.md index f047860e2..69db6930a 100644 --- a/plugins/asdf/README.md +++ b/plugins/asdf/README.md @@ -1,30 +1,48 @@ -## asdf - -**Maintainer:** [@RobLoach](https://github.com/RobLoach) +# 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 +## Installation -1. [Download asdf](https://asdf-vm.com/guide/getting-started.html#_2-download-asdf) by running the following: +1. [Install](https://asdf-vm.com/guide/getting-started.html#_1-install-asdf) asdf and ensure that's it's discoverable on `$PATH`; +2. Enable it by adding it to your `plugins` definition in `~/.zshrc`: - ``` - git clone https://github.com/asdf-vm/asdf.git ~/.asdf - ``` +```sh +plugins=(asdf) +``` -2. [Enable asdf](https://asdf-vm.com/guide/getting-started.html#_3-install-asdf) by adding it to your `plugins` definition in `~/.zshrc`. +## Usage - ``` - plugins=(asdf) - ``` +Refer to the [asdf plugin documentation](https://asdf-vm.com/guide/getting-started.html#_4-install-a-plugin) for information on how to add a plugin and install the many runtime versions for it. -### Usage +Example for installing the nodejs plugin and the many runtimes for it: -See the [asdf documentation](https://asdf-vm.com/guide/getting-started.html#_4-install-a-plugin) for information on how to use asdf: +```sh +# Add plugin to asdf +asdf plugin add nodejs -``` -asdf plugin add nodejs https://github.com/asdf-vm/asdf-nodejs.git +# Install the latest available version asdf install nodejs latest -asdf global nodejs latest -asdf local nodejs latest + +# Uninstall the latest version +asdf uninstall nodejs latest + +# Install a specific version +asdf install nodejs 16.5.0 + +# Set the latest version in .tool-versions of the `current directory` +asdf set nodejs latest + +# Set a specific version in the `parent directory` +asdf set -p nodejs 16.5.0 # -p is shorthand for --parent + +# Set a global version under `$HOME` +asdf set -u nodejs 16.5.0 # -u is shorthand for --home ``` + +For more commands, run `asdf help` or refer to the +[asdf CLI documentation](https://asdf-vm.com/manage/commands.html#all-commands). + +## Maintainer + +- [@RobLoach](https://github.com/RobLoach) 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" &| |
