@@ -1268,6 +1268,7 @@ unset KEEP_BUILD_PATH
1268
1268
unset HAS_PATCH
1269
1269
unset IPV4
1270
1270
unset IPV6
1271
+ unset EARLY_EXIT
1271
1272
1272
1273
RUBY_BUILD_INSTALL_PREFIX=" $( abs_dirname " $0 " ) /.."
1273
1274
@@ -1279,17 +1280,13 @@ parse_options "$@"
1279
1280
for option in " ${OPTIONS[@]} " ; do
1280
1281
case " $option " in
1281
1282
" h" | " help" )
1282
- version
1283
- echo
1284
- usage 0
1283
+ EARLY_EXIT=help
1285
1284
;;
1286
1285
" definitions" )
1287
- list_definitions
1288
- exit 0
1286
+ EARLY_EXIT=list_definitions
1289
1287
;;
1290
1288
" l" | " list" )
1291
- list_maintained_versions
1292
- exit 0
1289
+ EARLY_EXIT=list_maintained_versions
1293
1290
;;
1294
1291
" k" | " keep" )
1295
1292
KEEP_BUILD_PATH=true
@@ -1307,18 +1304,57 @@ for option in "${OPTIONS[@]}"; do
1307
1304
IPV6=true
1308
1305
;;
1309
1306
" version" )
1310
- version
1311
- exit 0
1307
+ EARLY_EXIT=version
1308
+ ;;
1309
+ * )
1310
+ printf " ruby-build: invalid flag '%s'\n" " $option " >&2
1311
+ EARLY_EXIT=usage_error
1312
1312
;;
1313
1313
esac
1314
1314
done
1315
1315
1316
- [ " ${# ARGUMENTS[@]} " -eq 2 ] || usage 1 >&2
1317
-
1318
1316
DEFINITION_PATH=" ${ARGUMENTS[0]} "
1319
- if [ -z " $DEFINITION_PATH " ]; then
1317
+ PREFIX_PATH=" ${ARGUMENTS[1]} "
1318
+
1319
+ if [ -z " $EARLY_EXIT " ] && [ -z " $DEFINITION_PATH " ]; then
1320
+ echo " ruby-build: missing definition argument" >&2
1321
+ EARLY_EXIT=usage_error
1322
+ fi
1323
+
1324
+ if [ -z " $EARLY_EXIT " ] && [ -z " $PREFIX_PATH " ]; then
1325
+ echo " ruby-build: missing prefix argument" >&2
1326
+ EARLY_EXIT=usage_error
1327
+ fi
1328
+
1329
+ if [ " ${# ARGUMENTS[@]} " -gt 2 ]; then
1330
+ echo " ruby-build: expected at most 2 arguments, got [${ARGUMENTS[*]} ]" >&2
1331
+ EARLY_EXIT=usage_error
1332
+ fi
1333
+
1334
+ case " $EARLY_EXIT " in
1335
+ help )
1336
+ version
1337
+ echo
1338
+ usage 0
1339
+ ;;
1340
+ version | list_definitions | list_maintained_versions )
1341
+ " $EARLY_EXIT "
1342
+ exit 0
1343
+ ;;
1344
+ usage_error )
1345
+ echo >&2
1320
1346
usage 1 >&2
1321
- elif [ ! -f " $DEFINITION_PATH " ]; then
1347
+ ;;
1348
+ ' ' )
1349
+ ;;
1350
+ * )
1351
+ echo " unimplemented EARLY_EXIT: $EARLY_EXIT " >&2
1352
+ exit 1
1353
+ ;;
1354
+ esac
1355
+
1356
+ # expand the <definition> argument to full path of the definition file
1357
+ if [ ! -f " $DEFINITION_PATH " ]; then
1322
1358
for DEFINITION_DIR in " ${RUBY_BUILD_DEFINITIONS[@]} " ; do
1323
1359
if [ -f " ${DEFINITION_DIR} /${DEFINITION_PATH} " ]; then
1324
1360
DEFINITION_PATH=" ${DEFINITION_DIR} /${DEFINITION_PATH} "
@@ -1332,10 +1368,8 @@ elif [ ! -f "$DEFINITION_PATH" ]; then
1332
1368
fi
1333
1369
fi
1334
1370
1335
- PREFIX_PATH=" ${ARGUMENTS[1]} "
1336
- if [ -z " $PREFIX_PATH " ]; then
1337
- usage 1 >&2
1338
- elif [ " ${PREFIX_PATH#/ } " = " $PREFIX_PATH " ]; then
1371
+ # normalize the <prefix> argument
1372
+ if [ " ${PREFIX_PATH#/ } " = " $PREFIX_PATH " ]; then
1339
1373
PREFIX_PATH=" ${PWD} /${PREFIX_PATH} "
1340
1374
fi
1341
1375
@@ -1366,7 +1400,7 @@ if [ -n "$noexec" ]; then
1366
1400
fi
1367
1401
1368
1402
if [ -z " $MAKE " ]; then
1369
- if is_freebsd && [[ $1 == jruby-* ]]; then
1403
+ if is_freebsd && [[ ${ARGUMENTS[0]} == jruby-* ]]; then
1370
1404
# jruby-launcher requires gmake: https://github.com/ruby/ruby/pull/8591
1371
1405
export MAKE=" gmake"
1372
1406
else
0 commit comments