sbt/bin/xsbt

60 lines
1.4 KiB
Bash
Executable File

#!/usr/bin/env bash
#
declare -r script_name="$(basename $BASH_SOURCE)"
declare -r sbt_jar=/soft/inst/sbt/xsbt-launch.jar
jvm_opts_standard="-XX:+CMSClassUnloadingEnabled -XX:ReservedCodeCacheSize=1g"
jvm_opts_memory="-XX:MaxPermSize=512m -Xmx4g -Xss4m"
# get completion if present
[[ -f .sbt_completion.sh ]] && source .sbt_completion.sh
usage () {
cat <<EOM
Usage: $script_name [options]
-help prints this message
-create creates a new project
-version <version> project initial version
-28 latest release of scala 2.8.x
-29 latest release of scala 2.9.x
-210 latest snapshot of scala 2.10
EOM
}
# no args
[[ $# -gt 0 ]] || echo "Starting $script_name: invoke with -help for other options"
# pull -J and -D options to give to java.
declare -a args
declare -a java_args
addJavaArg () {
java_args=("${java_args[@]}" "$1")
}
while [ $# -gt 0 ]; do
case "$1" in
-help) usage; exit 1 ;;
-D*) addJavaArg "$1"; shift ;;
-J*) addJavaArg "${1:2}"; shift ;;
-28) addJavaArg "-Dsbt-create.scalaVersion=2.8.1"; shift ;;
-29) addJavaArg "-Dsbt-create.scalaVersion=2.9.1"; shift ;;
-210) addJavaArg "-Dsbt-create.scalaVersion=2.10.0-SNAPSHOT"; shift ;;
*) args=("${args[@]}" "$1") ; shift ;;
esac
done
# reset "$@" to the residual args
set -- "${args[@]}"
# run sbt
java \
$JAVA_OPTS \
$jvm_opts_standard \
$jvm_opts_memory \
$SBT_OPTS \
${java_args[@]} \
-jar "$sbt_jar" \
"$@"