#!/bin/bash

##############################################################################
##
##  sirius start up script for UN*X
##
##############################################################################

trap 'kill $(jobs -p)' SIGINT SIGTERM EXIT

APP_HOME="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
LIB_DIR="${APP_HOME}/lib"

cd "${APP_HOME}"

export LD_LIBRARY_PATH="$GUROBI_HOME/lib:$CPLEX_HOME/lib:$APP_HOME/lib:$LD_LIBRARY_PATH"
export DYLD_LIBRARY_PATH="$LD_LIBRARY_PATH"
# Add default JVM options here. You can also use JAVA_OPTS and SIRIUS_OPTS to pass JVM options to this script.
DEFAULT_JVM_OPTS="-Djava.library.path=\"$GUROBI_HOME/lib:$CPLEX_HOME/lib:$APP_HOME/lib:$LIB_DIR\""

# Use the maximum available, or set MAX_FD != -1 to use that value.
MAX_FD="maximum"

warn ( ) {
   echo "$*"
}

die ( ) {
   echo
   echo "$*"
   echo
   exit 1
}

CLASSPATH="${LIB_DIR}/*:$APP_HOME/../../../All/Sirius/lib/*:${GUROBI_HOME}/lib/gurobi.jar:${CPLEX_HOME}/lib/cplex.jar"

# Determine the Java command to use to start the JVM.
if [ -n "$JAVA_HOME" ] ; then
   if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
       # IBM's JDK on AIX uses strange locations for the executables
       JAVACMD="$JAVA_HOME/jre/sh/java"
   else
       JAVACMD="$JAVA_HOME/bin/java"
   fi
   if [ ! -x "$JAVACMD" ] ; then
       die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME Please set the JAVA_HOME variable in your environment to match the location of your Java installation."
   fi
else
   JAVACMD="/usr/bin/java"
   #which $JAVACMD >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. Please set the JAVA_HOME variable in your environment to match the location of your Java installation."
fi

# Escape application args
# !!! Save does not work when invoked within KNIME
# save ( ) {
#    for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done
#    echo " "
#}
APP_ARGS="$@"

# Collect all arguments for the java command, following the shell quoting and substitution rules
eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $SIRIUS_OPTS -classpath "\"$CLASSPATH\"" de.unijena.bioinf.ms.cli.SiriusCLIApplication "$APP_ARGS"

# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong
if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then
 cd "$(dirname "$0")"
fi

exec "$JAVACMD" "$@"
