#!/bin/bash

# figure out home directory
if [ -z "$UNET_HOME" ]
then
  UNET_HOME=$(dirname "$0")
  UNET_HOME="`cd "$UNET_HOME"; pwd`"
  UNET_HOME=$(dirname "$UNET_HOME")
fi

# figure out java binary
if [ -z "$JAVA_HOME" ]; then
  JAVA="java"
else
  JAVA="$JAVA_HOME/bin/java"
fi

# if Java runtime is available in unet, use it
if [ -d "$UNET_HOME/runtimes/java" ]; then
  JAVA="$UNET_HOME/runtimes/java/bin/java"
  JAVA_HOME="$UNET_HOME/runtimes/java"
fi

# compose classpath
UNET_LIB="$UNET_HOME/lib"
CLASSPATH=.:"$UNET_HOME/classes"$(find "$UNET_HOME/jars/" -name '*.jar' -exec /bin/echo -n :'{}' \;)
CLASSPATH=$(find "$UNET_LIB" -name '*.jar' -exec /bin/echo -n :'{}' \;):"$CLASSPATH"

# Hostname
if [ -z "$HOSTNAME" ]; then
  HOSTNAME=$(hostname)
fi

# list of supported unet commands
UNET_CMDS="sim,audio,standalone"

# over-ride logging.properties if available
LOGGING_PROPERTIES=""
if [ -f "$UNET_HOME/scripts/logging.properties" ]; then
  LOGGING_PROPERTIES="-Djava.util.logging.config.file=$UNET_HOME/scripts/logging.properties"
elif [ -f "$UNET_HOME/etc/logging.properties" ]; then
  LOGGING_PROPERTIES="-Djava.util.logging.config.file=$UNET_HOME/etc/logging.properties"
fi

LOCAL_PROPERTIES=""
if [ -f "$UNET_HOME/bin/unet-local.sh" ]; then
  # shellcheck disable=SC1091
  . "$UNET_HOME/bin/unet-local.sh"
fi

# run unet
mkdir -p "$UNET_HOME/logs"
mkdir -p "$UNET_HOME/store"
mkdir -p "$UNET_HOME/tmp"
exec "$JAVA" -cp "$CLASSPATH" -Dfile.encoding=UTF-8 -Djava.net.preferIPv4Stack=true -Djava.library.path="$UNET_LIB" -Dapple.awt.UIElement=true -Dunet.home="$UNET_HOME" -Dunet.cmds="$UNET_CMDS" -Dunet.hostname="$HOSTNAME" $LOCAL_PROPERTIES $LOGGING_PROPERTIES org.arl.unet.UnetBoot "$@"
