Find file
Fetching contributors…
Cannot retrieve contributors at this time
executable file 126 lines (105 sloc) 2.81 KB
#!/bin/bash
function path_append {
_var=$1
_path=$2
eval "
if [[ -z \"\$$_var\" ]] ; then
export $_var=$_path
elif ! echo \$$_var | egrep -q \"(^|:)$_path($|:)\" ; then
export $_var=\$$_var:$_path
fi"
}
function path_prepend() {
_var=$1
_path=$2
eval "
if [[ -z \"\$$_var\" ]] ; then
export $_var=$_path
elif ! echo \$$_var | egrep -q \"(^|:)$_path($|:)\" ; then
export $_var=$_path:\$$_var
fi"
}
function find_sbt_root {
while [ ! -d project -a "x$PWD" != "x/" ] ; do
cd ..
done
if [ "x$PWD" = "/" ]; then
echo "couldn't find sbt project!" 1>&2
exit 1
fi
echo $PWD
}
function ensure_java_bin_on_path {
if [ -d "$JAVA_HOME" ]; then
__java_bindir="$JAVA_HOME/bin"
else
__java_bindir=`which java | xargs readlink | xargs dirname`
fi
if [ -x "$__java_bindir/java" ]; then
path_append PATH $__java_bindir
else
echo "Binary 'java' is not on the PATH, and JAVA_HOME is not set. Fix one of these."
exit 1
fi
}
function include {
_var=$1
_dir=$2
for jar in $_dir/lib_managed/compile/*.jar; do
path_append $_var $jar
done
for jar in $_dir/lib/*.jar; do
path_append $_var $jar
done
path_append $_var $_dir/src/main/resources
path_append $_var $_dir/target/classes
}
ensure_java_bin_on_path
root=$(find_sbt_root)
if [ $? -ne 0 ]; then
exit 1
fi
if [ -z $project ]; then
project="."
fi
set -- $(getopt i:ygdh: "$@")
while [ $# -gt 0 ]; do
case "$1" in
-i)
include CP $2
;;
-y)
JAVA_OPTS="-agentlib:yjpagent $JAVA_OPTS"
;;
-g)
GC_OPTS="-verbosegc -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintGCDateStamps -Xloggc:/tmp/gc.log"
;;
-d)
JAVA_OPTS="-Xdebug -Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=n $JAVA_OPTS"
;;
-h)
path_prepend DYLD_LIBRARY_PATH $2
JAVA_OPTS="-Xbootclasspath/a:$2 -agentlib:heapster $JAVA_OPTS"
;;
--) shift; break;;
esac
shift
done
if [ $# -eq 0 ]; then
echo "usage: $0 [-i INCLUDE] [-h HEAPSTER] [-ygd] CLASS ..." >&2
echo " -i INCLUDE include in the classpath the project with the sbt root INCLUDE" >&2
echo " -h HEAPSTER use heapster in the directory HEAPSTER" >&2
echo " -y enable yourkit debugging" >&2
echo " -g enable GC debugging/logging" >&2
echo " -d enable JVM debugging" >&2
exit 1
fi
## Set up the classpath. Scala base jars first.
path_prepend CP $root/project/boot/scala-2.8.1/lib/scala-library.jar
path_prepend CP $root/project/boot/scala-2.8.1/lib/scala-compiler.jar
# This goes last:
include CP $root
# Disable IPv6
export JAVA_OPTS="-Djava.net.preferIPv4Stack=true $JAVA_OPTS"
export JAVA_OPTS="$JAVA_OPTS -server -Xmx2G -XX:MaxPermSize=256m -XX:+UseConcMarkSweepGC -XX:+UseParNewGC $GC_OPTS"
exec java $JAVA_OPTS -cp $CP "$@"