#!/bin/bash

# OS specific support (must be 'true' or 'false').
cygwin=false;
darwin=false;
case "`uname`" in
    CYGWIN*)
        cygwin=true
        ;;
        
    Darwin*)
        darwin=true
        ;;
esac

if [ -z "${JAVA_HOME}" ]; then
    if $darwin ; then 
        [ -z "$JAVA_HOME" -a -f "/usr/libexec/java_home" ] && export JAVA_HOME=`/usr/libexec/java_home`
        [ -z "$JAVA_HOME" -a -d "/Library/Java/Home" ] && export JAVA_HOME="/Library/Java/Home"
        [ -z "$JAVA_HOME" -a -d "/System/Library/Frameworks/JavaVM.framework/Home" ] && export JAVA_HOME="/System/Library/Frameworks/JavaVM.framework/Home"
    else
        javaExecutable="`which javac`"
        [ -z "$javaExecutable" -o "`expr \"$javaExecutable\" : '\([^ ]*\)'`" = "no" ] && die "JAVA_HOME not set and cannot find javac to deduce location, please set JAVA_HOME."
        # readlink(1) is not available as standard on Solaris 10.
        readLink=`which readlink`
        [ `expr "$readLink" : '\([^ ]*\)'` = "no" ] && die "JAVA_HOME not set and readlink not available, please set JAVA_HOME."
        javaExecutable="`readlink -f \"$javaExecutable\"`"
        javaHome="`dirname \"$javaExecutable\"`"
        javaHome=`expr "$javaHome" : '\(.*\)/bin'`
        JAVA_HOME="$javaHome"
        export JAVA_HOME
    fi
fi

if [ ! -f "${JAVA_HOME}/bin/java" ]; then
	echo ""
	echo "======================================================================================================"
	echo " Please ensure that your JAVA_HOME points to a valid Java SDK."
	echo " You are currently pointing to:"
	echo ""
	echo "  ${JAVA_HOME}"
	echo ""
	echo " This does not seem to be valid. Please rectify and restart."
	echo "======================================================================================================"
	echo ""
	exit 1
fi

if [ "$SPRING_HOME" == "" ]; then
    SPRING_HOME=`cd "$(dirname $0)"/.. && pwd`
else
    if [ ! -d "${SPRING_HOME}" ]; then
        echo "Not a directory: SPRING_HOME=${SPRING_HOME}"
	    echo "Please rectify and restart."
        exit 2
    fi
    SPRING_HOME=`cd "${SPRING_HOME}" && pwd`
fi
SPRING_BIN=$(dirname $0)

TARGETDIR=target/classes
if [ -f build.gradle ]; then
    TARGETDIR=build/classes/main
fi

for f in "${TARGETDIR}" "${SPRING_HOME}"/classes "${SPRING_BIN}" "${SPRING_HOME}"/*.jar "${SPRING_HOME}"/lib/*.jar; do
    if [ -f $f -o -d $f ]; then
    	if [ "${CLASSPATH}" == "" ]; then
			CLASSPATH="${f}"
		else
   			CLASSPATH="${CLASSPATH}":"${f}"
		fi
	fi
done

if $cygwin; then
    CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
fi

${JAVA_HOME}/bin/java ${JAVA_OPTS} -cp "$CLASSPATH" org.springframework.bootstrap.cli.SpringBootstrapCli $*