#!/usr/bin/env bash
set -euo pipefail

JS7_HOME="$(cd "${0%/*}/../bin/.." && pwd)"
export JS7_HOME
. "$JS7_HOME/bin/internal/set-context.sh"
declare classpathString java
declare -a standardJavaOptions

args=()
javaOptions=(
  -Xms50m
  -Xmx100m)

for arg in "$@"; do :
  case "$arg" in
    --java-option=*)
      a="${arg#*=}"
      javaOptions+=("$a")
      ;;
    -J*)
      a="${arg#-J}"
      javaOptions+=("$a")
      ;;
    --config-directory=*)
      config="${arg#*=}"
      args+=("$arg")
      ;;
    --data-directory=*)
      data="${arg#*=}"
      args+=("$arg")
      ;;
    *)
      args+=("$arg")
  esac
done

if [[ "$JAVA_VERSION_MAJOR" -ge 25 ]]; then
  standardJavaOptions+=(
    -XX:SharedArchiveFile="$data/cache/SubagentClient.jsa"
    -XX:+AutoCreateSharedArchive
    -Xlog:cds=error)
fi

execute=(
  "$java"
  "${javaOptions[@]}"
  "-Dlog4j2.configurationFile=classpath:js7/log4j2.xml,classpath:js7/log4j2-stderr.xml,$config/log4j2.xml"
  "${standardJavaOptions[@]}"
  -classpath "$classpathString"
  js7.controller.client.main.ControllerClientMain
  "${args[@]}")

exec "${execute[@]}"
