Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

plugins/asdf: Add asdf extendable version manager plugin #593

Merged
merged 12 commits into from
Sep 1, 2024
8 changes: 8 additions & 0 deletions completions/asdf.completion.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
#! bash oh-my-bash.module
# Bash completion support for the `asdf` command.
# Depends on the `asdf` plugin.

# Only load the completions if the ASDF_DIR variable was set.
if [[ ${ASDF_DIR+set} ]]; then
. "$ASDF_DIR/completions/asdf.bash"
fi
1 change: 1 addition & 0 deletions plugins/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@ By leveraging these plugins, you can streamline your workflow and tackle coding
| Plugin | Description |
| --------------- | ------------------------------------------------------------------------------------------------------------------- |
| ansible | Configuration management tool used to automate the provisioning, configuration, and management of computer systems. |
| [asdf](asdf) | [asdf](https://asdf-vm.com) is a tool version manager to allow installing different versions of Node.js, Ruby, Golang, etc.
| aws | Tools for interacting with Amazon Web Services (AWS) |
| bash-preexec | Tool allowing execution of commands before they are executed in Bash. |
| bashmarks | Utility facilitating directory navigation via bookmarks in Bash. |
Expand Down
29 changes: 29 additions & 0 deletions plugins/asdf/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
# asdf plugin

Add [oh-my-bash](https://ohmybash.github.io) 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. [Install asdf](https://github.com/asdf-vm/asdf#setup) by running the following:
``` bash
git clone https://github.com/asdf-vm/asdf.git ~/.asdf
```

2. Enable the plugin by adding it to your oh-my-bash `plugins` definition in `~/.bashrc`.
``` sh
plugins=(asdf)
```

2. Enable the completions by adding it to your oh-my-bash `completions` definition in `~/.bashrc`.
``` sh
completions=(asdf)
```

## Usage

See the [asdf usage documentation](https://github.com/asdf-vm/asdf#usage) for information on how to use asdf:

``` bash
asdf plugin add nodejs
asdf install nodejs latest
```
35 changes: 35 additions & 0 deletions plugins/asdf/asdf.plugin.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
#! bash oh-my-bash.module
# asdf.plugin.sh: asdf plugin for oh-my-bash.
RobLoach marked this conversation as resolved.
Show resolved Hide resolved
# Author: @RobLoach (https://github.com/robloach)
# Author: @prodrigues1912 (https://github.com/prodrigues1912)
# Originally suggested in https://github.com/ohmybash/oh-my-bash/pull/310
# Fork of the oh-my-zsh asdf plugin

# Custom ASDF_DIR location
if [[ ${ASDF_DIR+set} ]]; then
. "$ASDF_DIR/asdf.sh"

# Home
elif [[ -f "$HOME/.asdf/asdf.sh" ]]; then
ASDF_DIR="$HOME/.asdf"
. "${ASDF_DIR}/asdf.sh"

# Config
elif [[ -f "${XDG_CONFIG_HOME:-$HOME/.config}/asdf/asdf.sh" ]]; then
ASDF_DIR="${XDG_CONFIG_HOME:-$HOME/.config}/asdf"
. "${ASDF_DIR}/asdf.sh"

# Arch Linux / AUR Package
elif [[ -f "/opt/asdf-vm/asdf.sh" ]]; then
ASDF_DIR="/opt/asdf-vm"
. /opt/asdf-vm/asdf.sh

# Homebrew
elif _omb_util_command_exists brew; then
_omb_plugin_asdf__prefix="$(brew --prefix asdf)"
if [[ -f "$_omb_plugin_asdf__prefix/libexec/asdf.sh" ]]; then
ASDF_DIR="$_omb_plugin_asdf__prefix/libexec"
. "$ASDF_DIR/asdf.sh"
fi
unset -v _omb_plugin_asdf__prefix
fi
Loading