#!/bin/sh

##############################################################################
# Copyright 2002-2011, 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;
case "`uname`" in
    CYGWIN*) cygwin=true ;;
esac

# 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;

# see #2092
SCALA_HOME=`dirname "$SOURCE"`
SCALA_HOME=`cd "$SCALA_HOME"; pwd -P`
SCALA_HOME=`cd "$SCALA_HOME"/..; pwd`

# Remove spaces from SCALA_HOME on windows
if $cygwin; then
    SCALA_HOME=`cygpath --windows --short-name "$SCALA_HOME"`
    SCALA_HOME=`cygpath --unix "$SCALA_HOME"`
fi

# Constructing the extension classpath
TOOL_CLASSPATH="${SCALA_HOME}/misc/sbaz/scala-bazaars.jar:${SCALA_HOME}/misc/sbaz/sbaz.jar:${SCALA_HOME}/misc/sbaz/scala-library.jar"
if [ -z "$TOOL_CLASSPATH" ] ; then
    for ext in "$SCALA_HOME"/lib/* ; do
        if [ -z "$TOOL_CLASSPATH" ] ; then
            TOOL_CLASSPATH="$ext"
        else
            TOOL_CLASSPATH="$TOOL_CLASSPATH:$ext"
        fi
    done
fi

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"`
    TOOL_CLASSPATH=`cygpath --path --$format "$TOOL_CLASSPATH"`

    # SBAZ SPECIFIC LOGIC
    # On Windows, finsish install of sbaz dependencies now that JVM doesn't have a write lock on them
    if [ -a "${SCALA_HOME}/misc/sbaz/scala-bazaars.jar.staged" ] ; then
        mv ${SCALA_HOME}/misc/sbaz/scala-bazaars.jar.staged ${SCALA_HOME}/misc/sbaz/scala-bazaars.jar
    fi
    if [ -a "${SCALA_HOME}/misc/sbaz/sbaz.jar.staged" ] ; then
        mv ${SCALA_HOME}/misc/sbaz/sbaz.jar.staged ${SCALA_HOME}/misc/sbaz/sbaz.jar
    fi
    if [ -a "${SCALA_HOME}/misc/sbaz/scala-library.jar.staged" ] ; then
        mv ${SCALA_HOME}/misc/sbaz/scala-library.jar.staged ${SCALA_HOME}/misc/sbaz/scala-library.jar
    fi
    # Transitional support for pre sbaz 2.0
    if [ -a "${SCALA_HOME}/misc/sbaz/scala-library.jar.tmp" ] ; then
        mv ${SCALA_HOME}/misc/sbaz/scala-library.jar.tmp ${SCALA_HOME}/misc/sbaz/scala-library.jar
    fi
fi

# Reminder: substitution ${JAVA_OPTS:=-Xmx256M -Xms16M} DO NOT work on Solaris
[ -n "$JAVA_OPTS" ] || JAVA_OPTS="-Xmx256M -Xms16M"

if [ -z "$JAVACMD" -a -n "$JAVA_HOME" -a -x "$JAVA_HOME/bin/java" ]; then
    JAVACMD="$JAVA_HOME/bin/java"
fi

exec "${JAVACMD:=java}" $JAVA_OPTS -cp "$TOOL_CLASSPATH" -Dscala.home="$SCALA_HOME" -Denv.classpath="$CLASSPATH" -Denv.emacs="$EMACS"  sbaz.clui.CommandLine  "$@"
