#!/bin/sh
### ====================================================================== ###
##                                                                          ##
##  Serviio start Script                                                    ##
##                                                                          ##
### ====================================================================== ###

DIRNAME=`dirname "$0"`
PROGNAME=`basename "$0"`

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

   Darwin*)
       darwin=true
       ;;

   Linux)
       linux=true
       ;;
esac

# For Cygwin, ensure paths are in UNIX format before anything is touched
if $cygwin ; then
   [ -n "$SERVIIO_HOME" ] &&
       SERVIIO_HOME=`cygpath --unix "$SERVIIO_HOME"`
   [ -n "$JAVA_HOME" ] &&
       JAVA_HOME=`cygpath --unix "$JAVA_HOME"`
fi

# Setup SERVIIO_HOME
if [ "x$SERVIIO_HOME" = "x" ]; then
   # get the full path (without any relative bits)
   SERVIIO_HOME=`cd $DIRNAME/..; pwd`
fi
export SERVIIO_HOME

# Setup the JVM
if [ "x$JAVA" = "x" ]; then
   if [ "x$JAVA_HOME" != "x" ]; then
       JAVA="$JAVA_HOME/bin/java"
   else
       JAVA="java"
   fi
fi

# Setup the classpath
SERVIIO_CLASS_PATH="$SERVIIO_HOME/lib/*:$SERVIIO_HOME/config"

# Setup Serviio specific properties
JAVA_OPTS="-Djava.net.preferIPv4Stack=true -Djava.awt.headless=true -Dorg.restlet.engine.loggerFacadeClass=org.restlet.ext.slf4j.Slf4jLoggerFacade -Dderby.system.home=$SERVIIO_HOME/library -Dserviio.home=$SERVIIO_HOME -Dffmpeg.location=ffmpeg -Ddcraw.location=dcraw"

# Check if we are using Java9
JAVA_VERSION=$("$JAVA" -version 2>&1 | awk -F '"' '/version/ {print $2}')
case "$JAVA_VERSION" in
   \1.8*) JAVA9_OPTS="" ;;
   *) JAVA9_OPTS="--add-modules jdk.unsupported" ;;
esac

# For Cygwin, switch paths to Windows format before running java
if $cygwin; then
   SERVIIO_HOME=`cygpath --path --windows "$SERVIIO_HOME"`
   JAVA_HOME=`cygpath --path --windows "$JAVA_HOME"`
   SERVIIO_CLASS_PATH=`cygpath --path --windows "$SERVIIO_CLASS_PATH"`
fi

# Execute the JVM in the foreground
exec "$JAVA" $JAVA9_OPTS -Xmx512M -Xms20M -XX:+UseG1GC -XX:GCTimeRatio=1 -XX:MinHeapFreeRatio=10 -XX:MaxHeapFreeRatio=20 $JAVA_OPTS -classpath "$SERVIIO_CLASS_PATH" org.serviio.MediaServer "$@"