#!/bin/bash
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
INST_DIR=$DIR/../
LAUNCH_SCRIPT=$(basename "$0")

SHARED_LIB_PATH=$INST_DIR/../shared-lib
PRIVATE_LIB_PATH=$INST_DIR/lib

if [ -d "$PRIVATE_LIB_PATH" ]; then
    LIB_PATH=$PRIVATE_LIB_PATH
elif [ -d "$SHARED_LIB_PATH" ]; then
    LIB_PATH=$SHARED_LIB_PATH
else
    echo "could not find any of: "
    echo "  $PRIVATE_LIB_PATH"
    echo "  $SHARED_LIB_PATH"
    exit 1
fi

if [ -z "${JAVA_HOME}" ]; then
    # JAVA_HOME not set (or empty) --> let's hope 'java' is on the PATH
    JAVA_EXECUTABLE=java
else
    # JAVA_HOME set --> use 'java' command from there
    JAVA_EXECUTABLE="${JAVA_HOME}/bin/java"
fi

PACKAGED_JVM_OPTIONS=()
JVM_OPTIONS_FILE="$INST_DIR/conf/jvm.options"
if [ -f "$JVM_OPTIONS_FILE" ]; then
    while IFS= read -r option || [ -n "$option" ]; do
        [[ -z "$option" || "$option" == \#* ]] && continue
        PACKAGED_JVM_OPTIONS+=("$option")
    done < "$JVM_OPTIONS_FILE"
fi

# REFLEX_OPTS remains an intentionally late, deployment-specific override/addition.
read -r -a ENV_JVM_OPTIONS <<< "${REFLEX_OPTS:-}"

CLASSPATH_RESOURCES_OPTIONS=()
if [ -d "$INST_DIR/classpath-resources" ]; then
    CLASSPATH_RESOURCES_OPTIONS+=("-Dreflex.classpath.resources.dir=$INST_DIR/classpath-resources")
fi

"$JAVA_EXECUTABLE" "${PACKAGED_JVM_OPTIONS[@]}" "${ENV_JVM_OPTIONS[@]}" "${CLASSPATH_RESOURCES_OPTIONS[@]}" -Dreflex.app.dir="$INST_DIR" -Dreflex.launch.script="$LAUNCH_SCRIPT" -Djava.net.useSystemProxies=true -jar "$LIB_PATH/launch-hc-build-app.jar" "$@"
