Commit db359ec8 authored by Sam Stephenson's avatar Sam Stephenson
Browse files

Better option parsing for rbenv-install

parent 8446df21
Loading
Loading
Loading
Loading
+48 −16
Original line number Diff line number Diff line
@@ -11,23 +11,55 @@ if [ -z "$RBENV_ROOT" ]; then
  RBENV_ROOT="${HOME}/.rbenv"
fi

DEFINITION="$1"
case "$DEFINITION" in
"" | -* )
  { echo "usage: rbenv install VERSION"
    echo "       rbenv install /path/to/definition"
# Load shared library functions
eval "$(ruby-build --lib)" && lib

usage() {
  { echo "usage: rbenv install [-k|--keep] [-v|--verbose] VERSION"
    echo "       rbenv install [-k|--keep] [-v|--verbose] /path/to/definition"
    echo "       rbenv install -l|--list"
    echo
    echo "Available versions:"
    ruby-build --definitions | sed 's/^/  /'
    echo "  -l/--list        List all available versions"
    echo "  -k/--keep        Keep source tree in \$RBENV_BUILD_ROOT after installation"
    echo "                   (defaults to ${RBENV_ROOT}/sources)"
    echo "  -v/--verbose     Verbose mode: print compilation status to stdout"
    echo
  } >&2
  exit 1

  [ -z "$1" ] || exit "$1"
}

unset KEEP
unset VERBOSE

parse_options "$@"
for option in "${OPTIONS[@]}"; do
  case "$option" in
  "h" | "help" )
    usage 0
    ;;
"-k" | "--keep" )
  [ -z "${RBENV_BUILD_ROOT}" ] && RBENV_BUILD_ROOT="${RBENV_ROOT}/sources"
  RUBY_BUILD_OPTIONS="${RUBY_BUILD_OPTIONS} -k"
  "l" | "list" )
    echo "Available versions:"
    ruby-build --definitions | sed 's/^/  /'
    exit
    ;;
  "k" | "keep" )
    [ -n "${RBENV_BUILD_ROOT}" ] || RBENV_BUILD_ROOT="${RBENV_ROOT}/sources"
    ;;
  "v" | "verbose" )
    VERBOSE="-v"
    ;;
  "version" )
    exec ruby-build --version
    ;;
  * )
    usage 1
    ;;
  esac
done

DEFINITION="${ARGUMENTS[0]}"
[ -n "$DEFINITION" ] || usage 1

VERSION_NAME="${DEFINITION##*/}"
PREFIX="${RBENV_ROOT}/versions/${VERSION_NAME}"
@@ -35,8 +67,8 @@ PREFIX="${RBENV_ROOT}/versions/${VERSION_NAME}"
# If RBENV_BUILD_ROOT is set, then always pass keep options to ruby-build
if [ -n "${RBENV_BUILD_ROOT}" ]; then
  export RUBY_BUILD_BUILD_PATH="${RBENV_BUILD_ROOT}/${VERSION_NAME}"
  RUBY_BUILD_OPTIONS="${RUBY_BUILD_OPTIONS} -k"
  KEEP="-k"
fi

ruby-build "$DEFINITION" "$PREFIX" "$RUBY_BUILD_OPTIONS"
ruby-build $KEEP $VERBOSE "$DEFINITION" "$PREFIX"
rbenv rehash