#!/bin/sh

##############################################################################
# Scala runtime 2.1.5
##############################################################################
# copyright 2002-2006 LAMP EPFL
# This is free software; see the distribution for copying conditions.
# There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A
# PARTICULAR PURPOSE.
##############################################################################

cygwin=false;
darwin=false;
case "`uname`" in
    CYGWIN*) cygwin=true ;;
    Darwin*) darwin=true ;;
esac

# Prints out version if the "-version" flag is passed
for flag in "$@" ; do
    #TODO: take version only if it is before the tool class name
    if [ "$flag" = '-version' ] ; then
        echo "Scala runtime version 2.1.5 -- copyright 2002-2006 LAMP EPFL"
        ${JAVACMD:=java} -version
        exit 0
    fi
done

# Finding the root folder for this Scala distribution
SOURCE=$0;
SCRIPT=`basename "$SOURCE"`;
while [ -h "$SOURCE" ]; do
    SCRIPT=`basename "$SOURCE"`;
    LOOKUP=`ls -ld "$SOURCE"`;
    TARGET=`expr "$LOOKUP" : '.*-> \(.*\)$'`;
    if expr "${TARGET:-.}/" : '/.*/$' > /dev/null; then
        SOURCE=${TARGET:-.};
    else
        SOURCE=`dirname "$SOURCE"`/${TARGET:-.};
    fi;
done;
SCALA_HOME=`dirname "$SOURCE"`/..;
SCALA_HOME=`cd "$SCALA_HOME"; pwd`;

# Will contain (at the end of the script) all arguments that weren't explicitly handled
USER_ARGS=""

# Constructing the user class-path in three overriding steps
# Step 1: Class-path set to default value "."
USER_CLASSPATH="."
# Step 2: Class-path overridden to value of "CLASSPATH" environment variable
if [ "$CLASSPATH" != "" ] ; then
      USER_CLASSPATH="$CLASSPATH"
fi
# Step 3: Class-path overridden to value of "-classpath" script parameter 
IS_CP_ARGUMENT=0
for arg in "$@" ; do
    if [ "$IS_CP_ARGUMENT" -eq 1 ] ; then
        USER_CLASSPATH=$arg
        IS_CP_ARGUMENT=0
    else
        if [ "$arg" = "-cp" ] || [ "$arg" = "-classpath" ] ; then
            IS_CP_ARGUMENT=1
        else
            USER_ARGS="$USER_ARGS $arg"
            IS_CP_ARGUMENT=0
        fi
    fi
done

# Constructing the extension classpath
EXTENSION_CLASSPATH=""
if [ "$EXTENSION_CLASSPATH" = "" ] ; then
    for ext in `ls -L "$SCALA_HOME"/lib/*` ; do
        if [ "$EXTENSION_CLASSPATH" = "" ] ; then
            EXTENSION_CLASSPATH="$ext"
        else
            EXTENSION_CLASSPATH="$EXTENSION_CLASSPATH:$ext"
        fi
    done
fi

# Setting the boot class-path to be the standard library (either as a JAR or a folder)
BOOT_CLASSPATH=""
if [ "$BOOT_CLASSPATH" = "" ] ; then
    if [ -f "$SCALA_HOME/lib/scala-library.jar" ] ; then
        BOOT_CLASSPATH="$SCALA_HOME/lib/scala-library.jar"
    elif [ -d "$SCALA_HOME/lib/library" ] ; then
        BOOT_CLASSPATH="$SCALA_HOME/lib/library"
    fi
fi

# The merge of all three previous classpaths. All Scala code must currently be in a single class loader.
MERGED_CLASSPATH="$BOOT_CLASSPATH:$USER_CLASSPATH:$EXTENSION_CLASSPATH"

if $cygwin; then
    if [ "$OS" = "Windows_NT" ] && cygpath -m .>/dev/null 2>/dev/null ; then
        format=mixed
    else
        format=windows
    fi
    SCALA_HOME=`cygpath --$format "$SCALA_HOME"`
    MERGED_CLASSPATH=`cygpath --path --$format "$MERGED_CLASSPATH"`
fi

${JAVACMD:=java} -Xmx256M -Xms16M -cp "$MERGED_CLASSPATH" -Dscala.home="$SCALA_HOME"  $USER_ARGS
