Skip to content

Commit db359ec

Browse files
committed
Better option parsing for rbenv-install
1 parent 8446df2 commit db359ec

File tree

1 file changed

+48
-16
lines changed

1 file changed

+48
-16
lines changed

bin/rbenv-install

Lines changed: 48 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -11,32 +11,64 @@ if [ -z "$RBENV_ROOT" ]; then
1111
RBENV_ROOT="${HOME}/.rbenv"
1212
fi
1313

14-
DEFINITION="$1"
15-
case "$DEFINITION" in
16-
"" | -* )
17-
{ echo "usage: rbenv install VERSION"
18-
echo " rbenv install /path/to/definition"
14+
# Load shared library functions
15+
eval "$(ruby-build --lib)" && lib
16+
17+
usage() {
18+
{ echo "usage: rbenv install [-k|--keep] [-v|--verbose] VERSION"
19+
echo " rbenv install [-k|--keep] [-v|--verbose] /path/to/definition"
20+
echo " rbenv install -l|--list"
1921
echo
20-
echo "Available versions:"
21-
ruby-build --definitions | sed 's/^/ /'
22+
echo " -l/--list List all available versions"
23+
echo " -k/--keep Keep source tree in \$RBENV_BUILD_ROOT after installation"
24+
echo " (defaults to ${RBENV_ROOT}/sources)"
25+
echo " -v/--verbose Verbose mode: print compilation status to stdout"
2226
echo
2327
} >&2
24-
exit 1
25-
;;
26-
"-k" | "--keep" )
27-
[ -z "${RBENV_BUILD_ROOT}" ] && RBENV_BUILD_ROOT="${RBENV_ROOT}/sources"
28-
RUBY_BUILD_OPTIONS="${RUBY_BUILD_OPTIONS} -k"
29-
;;
30-
esac
28+
29+
[ -z "$1" ] || exit "$1"
30+
}
31+
32+
unset KEEP
33+
unset VERBOSE
34+
35+
parse_options "$@"
36+
for option in "${OPTIONS[@]}"; do
37+
case "$option" in
38+
"h" | "help" )
39+
usage 0
40+
;;
41+
"l" | "list" )
42+
echo "Available versions:"
43+
ruby-build --definitions | sed 's/^/ /'
44+
exit
45+
;;
46+
"k" | "keep" )
47+
[ -n "${RBENV_BUILD_ROOT}" ] || RBENV_BUILD_ROOT="${RBENV_ROOT}/sources"
48+
;;
49+
"v" | "verbose" )
50+
VERBOSE="-v"
51+
;;
52+
"version" )
53+
exec ruby-build --version
54+
;;
55+
* )
56+
usage 1
57+
;;
58+
esac
59+
done
60+
61+
DEFINITION="${ARGUMENTS[0]}"
62+
[ -n "$DEFINITION" ] || usage 1
3163

3264
VERSION_NAME="${DEFINITION##*/}"
3365
PREFIX="${RBENV_ROOT}/versions/${VERSION_NAME}"
3466

3567
# If RBENV_BUILD_ROOT is set, then always pass keep options to ruby-build
3668
if [ -n "${RBENV_BUILD_ROOT}" ]; then
3769
export RUBY_BUILD_BUILD_PATH="${RBENV_BUILD_ROOT}/${VERSION_NAME}"
38-
RUBY_BUILD_OPTIONS="${RUBY_BUILD_OPTIONS} -k"
70+
KEEP="-k"
3971
fi
4072

41-
ruby-build "$DEFINITION" "$PREFIX" "$RUBY_BUILD_OPTIONS"
73+
ruby-build $KEEP $VERBOSE "$DEFINITION" "$PREFIX"
4274
rbenv rehash

0 commit comments

Comments
 (0)