Nearly ready to ship.

This commit is contained in:
Paul Phillips 2011-08-14 09:55:31 -07:00
parent 7f6bd6b7a7
commit 2c79fe5dda
3 changed files with 55 additions and 24 deletions

View File

@ -3,9 +3,11 @@
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"
declare -r default_java_opts="-Dfile.encoding=UTF8"
declare -r default_sbt_opts="-XX:+CMSClassUnloadingEnabled -XX:MaxPermSize=512m -Xmx2g -Xss2m"
declare -r latest_28="2.8.1"
declare -r latest_29="2.9.0-1"
declare -r latest_210="2.10.0-SNAPSHOT"
# get completion if present
[[ -f .sbt_completion.sh ]] && source .sbt_completion.sh
@ -15,33 +17,64 @@ usage () {
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
-boot path to shared sbt boot directory (default: none)
-debug set sbt log level to debug
-global path to directory containing global settings and plugins (default: ~/.sbt)
-ivy path to local Ivy repository (default: ~/.ivy2)
-nocolor disable ANSI color codes
-28 set scala version to $latest_28
-29 set scala version to $latest_29
-210 set scala version to $latest_210
-Dkey=val pass -Dkey=val directly to the jvm
-J-X pass option -X directly to the jvm
The contents of the following environment variables, if any, will be
passed to the jvm. Later variables take priority over earlier ones, and
command line options (-D/-J) take priority over all of them.
JAVA_OPTS # defaults: $default_java_opts
SBT_OPTS # defaults: $default_sbt_opts
If an environment variable is set, its defaults are not given.
EOM
}
# no args
[[ $# -gt 0 ]] || echo "Starting $script_name: invoke with -help for other options"
# no args - alert them there's stuff in here
[[ $# -gt 0 ]] || {
echo "Starting $script_name: invoke with -help for other options"
# so it still starts if we injected any sbt commands
set -- "shell"
}
# pull -J and -D options to give to java.
declare -a args
declare -a java_args
addJavaArg () {
declare -a sbt_commands
addJava () {
java_args=("${java_args[@]}" "$1")
}
addSbt () {
sbt_commands=("${sbt_commands[@]}" "$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 ;;
-help) usage; exit 1 ;;
-global) addJava "-Dsbt.global.base=$2"; shift 2 ;;
-boot) addJava "-Dsbt.boot.directory=$2"; shift 2 ;;
-ivy) addJava "-Dsbt.ivy.home=$2"; shift 2 ;;
-nocolors) addJava "-Dsbt.log.noformat=true"; shift ;;
-28) addJava "-Dsbt.scala.version=$latest_28"; shift ;;
-29) addJava "-Dsbt.scala.version=$latest_29"; shift ;;
-210) addJava "-Dsbt.scala.version=$latest_210"; shift ;;
-D*) addJava "$1"; shift ;;
-J*) addJava "${1:2}"; shift ;;
-debug) addSbt "set logLevel := Level.Debug"; shift ;;
*) args=("${args[@]}" "$1") ; shift ;;
esac
done
@ -51,9 +84,8 @@ set -- "${args[@]}"
# run sbt
java \
$JAVA_OPTS \
$jvm_opts_standard \
$jvm_opts_memory \
$SBT_OPTS \
${SBT_OPTS:-$default_sbt_opts} \
${java_args[@]} \
-jar "$sbt_jar" \
"${sbt_commands[@]}" \
"$@"

View File

@ -18,7 +18,7 @@ object SbtCreateConfig {
def name = prop("sbt-create.name", "project-name-here")
def organization = prop("sbt-create.organization", "your.organization.here")
def version = prop("sbt-create.version", "0.1-SNAPSHOT")
def scalaVersion = prop("sbt-create.scalaVersion", "2.9.0-1")
def scalaVersion = prop("sbt.scala.version", "2.9.0-1")
}
}

View File

@ -2,7 +2,6 @@ package template
object Main {
def main(args: Array[String]): Unit = {
// Your code here
args foreach println
println("Skeleton main, reporting for duty on " + util.Properties.versionString)
}
}