rbenv-ruby-build/bin/rbenv-install
2011-10-19 15:21:44 -05:00

82 lines
1.3 KiB
Bash
Executable file

#!/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