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

. "${0%/*}/internal/set-context.sh"
declare java classpathString
declare -a standardJavaOptions

data="$HOME/data"
javaOptions=()
args=()

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

if [[ "$JAVA_VERSION_MAJOR" -ge 19 ]]; then
  jsaFile="$data/cache/js7.jsa"
  myJsaFile="$data/cache/SubagentClient.jsa"
  if [[ -f "$jsaFile" ]]; then
    standardJavaOptions+=("-XX:SharedArchiveFile=$jsaFile")
    [[ ! -f "$myJsaFile" ]] || rm "$myJsaFile"
  else
    standardJavaOptions+=("-XX:SharedArchiveFile=$myJsaFile" -XX:+AutoCreateSharedArchive)
  fi
fi

execute=("$java" -Xmx50m "${javaOptions[@]}" "${standardJavaOptions[@]}")
execute+=(-classpath "$classpathString")
execute+=(-Dlog4j2.configurationFile="classpath:js7/log4j2.xml,classpath:js7/log4j2-stderr.xml")
execute+=(js7.agent.client.main.SubagentClientMain --data-directory="$data" "${args[@]}")
#echo 1>&2 "${execute[@]}"
exec "${execute[@]}"
