#!/usr/bin/env bash # Summary: Configure the shell environment for rbenv # Usage: eval "$(rbenv init - [--no-rehash] [])" set -e [ -n "$RBENV_DEBUG" ] && set -x # Provide rbenv completions if [ "$1" = "--complete" ]; then echo - echo --no-rehash echo bash echo fish echo ksh echo zsh exit fi print="" no_rehash="" for args in "$@" do if [ "$args" = "-" ]; then print=1 shift fi if [ "$args" = "--no-rehash" ]; then no_rehash=1 shift fi done shell="$1" if [ -z "$shell" ]; then shell="$(ps -p "$PPID" -o 'args=' 2>/dev/null || true)" shell="${shell%% *}" shell="${shell##-}" shell="${shell:-$SHELL}" shell="${shell##*/}" shell="${shell%%-*}" fi root="${BASH_SOURCE:-$0}" root="${root%/*}" root="${root%/*}" rbenv_in_path=true if [ -n "$RBENV_ORIG_PATH" ]; then PATH="$RBENV_ORIG_PATH" type -P rbenv >/dev/null || rbenv_in_path="" fi if [ -z "$print" ]; then case "$shell" in bash ) if [ -f "${HOME}/.bashrc" ] && [ ! -f "${HOME}/.bash_profile" ]; then profile='~/.bashrc' else profile='~/.bash_profile' fi ;; zsh ) profile='~/.zshrc' ;; ksh | ksh93 | mksh ) # There are two implementations of Korn shell: AT&T (ksh93) and Mir (mksh). # Systems may have them installed under those names, or as ksh, so those # are recognized here. The obsolete ksh88 (subsumed by ksh93) and pdksh # (subsumed by mksh) are not included, since they are unlikely to still # be in use as interactive shells anywhere. profile='~/.profile' ;; fish ) profile='~/.config/fish/config.fish' ;; * ) profile='your profile' ;; esac rbenv_command=rbenv if [ -z "$rbenv_in_path" ]; then rbenv_command="$root/bin/rbenv" rbenv_command="${rbenv_command/$HOME\//~/}" fi { echo "# Please add the following line to your \`${profile}' file," echo "# then restart your terminal." echo [ -t 2 ] && printf '\e[33;1m' case "$shell" in fish ) printf 'status --is-interactive; and %s init - fish | source' "$rbenv_command" ;; * ) # shellcheck disable=SC2016 printf 'eval "$(%s init - %s)"' "$rbenv_command" "$shell" ;; esac [ -t 2 ] && printf '\e[m' echo echo } >&2 exit 1 fi mkdir -p "${RBENV_ROOT}/"{shims,versions} case "$shell" in fish ) [ -n "$rbenv_in_path" ] || printf "set -gx PATH '%s/bin' \$PATH\n" "$root" printf "set -gx PATH '%s/shims' \$PATH\n" "$RBENV_ROOT" printf 'set -gx RBENV_SHELL %s\n' "$shell" ;; * ) # shellcheck disable=SC2016 [ -n "$rbenv_in_path" ] || printf 'export PATH="%s/bin:${PATH}"\n' "$root" # shellcheck disable=SC2016 printf 'export PATH="%s/shims:${PATH}"\n' "$RBENV_ROOT" printf 'export RBENV_SHELL=%s\n' "$shell" completion="${root}/completions/rbenv.${shell}" if [ -r "$completion" ]; then printf "source '%s'\n" "$completion" fi ;; esac if [ -z "$no_rehash" ]; then echo 'command rbenv rehash 2>/dev/null' fi IFS=$'\n' read -d '' -r -a commands <<<"$(rbenv-commands --sh)" || true case "$shell" in fish ) cat <