diff --git a/bin/xsbt b/bin/xsbt index 2ef442719..ec13fb472 100755 --- a/bin/xsbt +++ b/bin/xsbt @@ -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 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[@]}" \ "$@" diff --git a/project/Build.scala b/project/Build.scala index 4a18be5bb..c11f8f71a 100644 --- a/project/Build.scala +++ b/project/Build.scala @@ -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") } } diff --git a/src/main/scala/Main.scala b/src/main/scala/Main.scala index ff9395182..bff37c687 100644 --- a/src/main/scala/Main.scala +++ b/src/main/scala/Main.scala @@ -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) } }