#!/bin/sh
#
# Usage: davmail [</path/to/davmail.properties>] [-notray] [-token]
#
BASE=$(dirname "$0")
# set memory and enable DNS expiration
: "${JAVA_OPTS:=-Xmx512M -Dsun.net.inetaddr.ttl=60}"
JAVA=java

# Experimental: download Azul JRE FX with command 'davmail azul'
if [ "x$1" = 'xazul' ]; then
  if [ "$BASE" = '/usr/bin' ]; then
    echo Use platform independent package to run DavMail with Azul JDK
    exit 1
  fi
  if curl -L --fail -o "$BASE/jre.tgz" "https://api.azul.com/zulu/download/community/v1.0/bundles/latest/binary/?jdk_version=21&ext=tar.gz&os=linux&arch=x86&hw_bitness=64&bundle_type=jre&features=fx"; then
    echo Downloaded Azul JRE
  else
    echo Unable to download Azul JRE
    exit 1
  fi;
  rm -Rf "$BASE/jre"
  mkdir "$BASE/jre"
  tar xvzf "$BASE/jre.tgz" -C "$BASE/jre" --strip 1
  rm "$BASE/jre.tgz"
  echo "Downloaded latest Azul JRE, launch davmail normally"
  exit
fi

# check for embedded jre
if [ -e "$BASE/jre/bin/java" ]; then
  JAVA=$BASE/jre/bin/java
  JAVA_OPTS="$JAVA_OPTS --add-exports java.base/sun.net.www.protocol.https=ALL-UNNAMED"
  echo "Using embedded JRE"
  $JAVA -version
elif  java -version 2>&1 >/dev/null | grep -q "version" ; then
  echo "Using system provided JRE"
  java -version

  if [ -e "/usr/lib/jvm/openjfx" ]; then
    echo "Enable OpenJFX"
    JAVA_OPTS="$JAVA_OPTS --add-exports java.base/sun.net.www.protocol.https=ALL-UNNAMED"
    JAVA_OPTS="$JAVA_OPTS -Djava.library.path=/usr/lib/jvm/openjfx --module-path /usr/lib/jvm/openjfx --add-modules javafx.base,javafx.controls,javafx.web,javafx.fxml,javafx.swing"
  elif [ -e "/usr/share/openjfx" ]; then
    # matches Kubuntu
    echo "Enable OpenJFX"
    JAVA_OPTS="$JAVA_OPTS --add-exports java.base/sun.net.www.protocol.https=ALL-UNNAMED"
  else
    # add JFX to classpath with OpenJDK 11
    JFX_CLASSPATH=/usr/share/java/javafx-base.jar:/usr/share/java/javafx-controls.jar:/usr/share/java/javafx-fxml.jar:/usr/share/java/javafx-graphics.jar:/usr/share/java/javafx-media.jar:/usr/share/java/javafx-swing.jar:/usr/share/java/javafx-web.jar
  fi
elif [ -e "$BASE/davmail.jar" ]; then
  # display message for platform independent package
  echo "Java not found, try davmail azul to fetch latest Azul JRE"
  exit 1
fi

if [ -e /usr/lib/java/swt.jar ]; then
    # latest SWT on Fedora
    JAVA_OPTS="$JAVA_OPTS --enable-native-access=ALL-UNNAMED"
    SWT_CLASSPATH=/usr/lib/java/swt.jar
elif [ -e /usr/share/java/swt.jar ]; then
    # SWT 3 is available, deprecated?
    JAVA_OPTS="$JAVA_OPTS -Djdk.gtk.version=2.2"
    export LD_LIBRARY_PATH=/usr/lib/jni
    SWT_CLASSPATH=/usr/share/java/swt.jar
elif [ -e /usr/share/java/swt4.jar ]; then
    # SWT 4 is available
    export LD_LIBRARY_PATH=/usr/lib/jni
    SWT_CLASSPATH=/usr/share/java/swt4.jar
else
    SWT_CLASSPATH=
fi

if [ -e "$BASE/davmail.jar" ]; then
    # this is the platform independent package
    exec "${JAVA}" $JAVA_OPTS -cp "$BASE/davmail.jar:$BASE/lib/*:${SWT_CLASSPATH}:${JFX_CLASSPATH}" davmail.DavGateway "$@"
else
    exec "${JAVA}" $JAVA_OPTS -cp "/usr/share/davmail/davmail.jar:${SWT_CLASSPATH}:${JFX_CLASSPATH}:/usr/share/davmail/lib/*" davmail.DavGateway "$@"
fi
