#!/bin/sh

# PATH values
if [ -x /usr/libexec/path_helper ]; then
    eval `/usr/libexec/path_helper -s`
fi

BASEDIR=`dirname $0`  #Rflow install dir
BASEDIR=${BASEDIR}/../Resources
# to absolute path
BASEDIR=$(cd $BASEDIR && pwd)

#settings

#JRI_DIR=/usr/local/lib/R/site-library/rJava/jri
#R_HOME=/usr/lib/R

JRI_DIR=
DETECT_JRI=true
if $DETECT_JRI = true ; then
    R_LIBPATHS=`R --slave --vanilla --no-readline -e 'cat(sapply(.libPaths(), function(x){paste(x, "/rJava/jri", sep="")}))'`
    for i in $R_LIBPATHS
    do
        if test -e $i ; then
            JRI_DIR=$i
            break
        fi
    done
fi

R_HOME=`R RHOME | sed -n '$p'`
R_SHARE_DIR=`R CMD sh -c 'echo $R_SHARE_DIR' | sed -n '$p'`
R_INCLUDE_DIR=`R CMD sh -c 'echo $R_INCLUDE_DIR' | sed -n '$p'`
R_DOC_DIR=`R CMD sh -c 'echo $R_DOC_DIR' | sed -n '$p'`


export R_HOME
export R_SHARE_DIR
export R_INCLUDE_DIR
export R_DOC_DIR

# java
JAVA=$BASEDIR/ext/jre/bin/java

if test -e $JAVA ; then
    JAVA_HOME=$BASEDIR/ext/jre
else
    JAVA=java
    JAVA_HOME=`/usr/libexec/java_home`
fi

if test -z "$DYLD_LIBRARY_PATH" ; then
    DYLD_LIBRARY_PATH=$JAVA_HOME/lib/server
else
    DYLD_LIBRARY_PATH=$DYLD_LIBRARY_PATH:$JAVA_HOME/lib/server
fi

export JAVA_HOME

# lang
LA=`$JAVA -classpath $BASEDIR/rflow.jar com.ef_prime.rflow.GetLocale`
export LANG=$LA.UTF-8

RVERSION=`R --slave --vanilla --no-readline -e 'cat(as.character(getRversion()))'`

#--------------------------------------------------------
#You don't have to modify under this line.
#--------------------------------------------------------

if $DETECT_JRI = true ; then
    if ! test -e $JRI_DIR ; then
    	echo cannot find JRI packages
    	echo JRI_DIR=$JRI_DIR
    fi
fi

JFX_LIB="$BASEDIR/ext/javafx/lib"

DYLD_LIBRARY_PATH="$DYLD_LIBRARY_PATH:$JRI_DIR"
export DYLD_LIBRARY_PATH

RJAVA_BOOT_CP=`R --slave --vanilla --no-readline -e '(function(x){cat(if("rJava" %in% row.names(x)) paste0(":", x["rJava", "LibPath"], "/rJava/java/boot/") else "")})(installed.packages())'`

MAIN_CLASS="com.ef_prime.rflow.Rflow"
SPLASH="-splash:$BASEDIR/img/splash.png"
MODULES=javafx.swing,javafx.web

#-Dapple.laf.useScreenMenuBar=true
RUN_APP="$JAVA $SPLASH -Xdock:name=\"R AnalyticFlow\" -Xdock:icon=$BASEDIR/desktop.icns -Djri.path=$JRI_DIR -Dr.version=$RVERSION -Djri.ignore.ule=yes --module-path $JFX_LIB --add-modules $MODULES -classpath $BASEDIR/*:$BASEDIR/ext/*:$BASEDIR/ext/common/*:$RJAVA_BOOT_CP $MAIN_CLASS $*"

eval $RUN_APP

# 2 is restart exit code
while [ $? -eq 2 ]
do
  sleep 1
  eval $RUN_APP
done
