#!/usr/bin/env bash set -e [ -n "$RBENV_DEBUG" ] && set -x resolve_link() { $(type -p greadlink readlink | head -1) $1 } abs_dirname() { local cwd="$(pwd)" local path="$1" while [ -n "$path" ]; do cd "${path%/*}" local name="${path##*/}" path="$(resolve_link "$name" || true)" done pwd cd "$cwd" } usage() { { echo "usage: rbenv install [--build | --package] VERSION" echo " rbenv install /path/to/definition" echo echo "Available versions:" ruby-build --definitions | sed 's/^/ /' echo } >&2 exit 1 } bin_dir="$(abs_dirname "$0")" export PATH="${bin_dir}:$PATH" # Provide rbenv completions if [ "$1" = "--complete" ]; then exec ruby-build --definitions fi force_build="" force_package="" if [ "$1" = "--build" ]; then force_build=1 shift elif [ "$1" = "--package" ]; then force_package=1 shift fi definition="$1" case "$definition" in "" | -* ) usage ;; esac if [ -z "$RBENV_ROOT" ]; then RBENV_ROOT="${HOME}/.rbenv" fi version_name="${definition##*/}" prefix="${RBENV_ROOT}/versions/${version_name}" package() { ruby-package install $* "$definition" "$prefix" } build() { ruby-build "$definition" "$prefix" } if [ -n "$force_build" ]; then build elif [ -n "$force_package" ]; then package else package --fail-silently || build fi rbenv rehash