#!/bin/bash

realPath() {
    path=$1
    target=$(readlink "${path}")

    while [ -n "${target}" ]; do
        path=$(cd $(dirname "${path}") && cd $(dirname "${target}") && pwd -P)/$(basename "${target}")
        target=$(readlink ${path})
    done

    if [ -d "${path}" ]; then
        path=$(cd "${path}" && pwd -P)
    elif [ -f "${path}" ]; then
        path=$(cd $(dirname "${path}") && pwd -P)/$(basename "${path}")
    fi

    echo "${path}"
}

self=$(realPath "$0")
dir=$(dirname "${self}")
name=$(basename "${self}")

cmd="${dir}/.${name}"
if [ ! -x "${cmd}" ]; then
  echo "$0: ${cmd} does not exist" >&2
  exit 1
fi

# set up java modules for Hazelcast
if [ -z "${JAVA_HOME}" ]; then
  if ( ! which java > /dev/null 2>&1 ); then
      echo "$0: could not find Java" >&2
      exit 1
  fi
  java='java'

else
  java="${JAVA_HOME}/bin/java"
  if [ ! -x ${java} ]; then
    java="${JAVA_HOME}/jre/sh/java"
    if [ ! -x ${java} ]; then
      echo "$0: could not find Java" >&2
      exit 1
    fi
  fi
fi

java_version=$( ${java} -version 2>&1 | grep version | cut -d'"' -f 2 | cut -d'.' -f 1,2 )
if [ ${java_version} = '1.8' ]; then
  java_version=8
elif [ $(echo ${java_version} | cut -d'.' -f 1) = '11' ]; then
  java_version=11
fi

# setup hazelcast logging and java modules
if [ ${java_version} != 8 ] && [ ${java_version} != 11 ]; then
  echo "$0: Java ${java_version} is currently not supported, please use Java 8 or 11"
elif (( ${java_version} > 8 )); then
  export BC_CLI_OPTS="-Dprogram.name=${name} -Dhazelcast.logging.type=log4j2 --add-modules java.se --add-exports java.base/jdk.internal.ref=ALL-UNNAMED --add-opens java.base/java.lang=ALL-UNNAMED --add-opens java.base/java.nio=ALL-UNNAMED --add-opens java.base/sun.nio.ch=ALL-UNNAMED --add-opens java.management/sun.management=ALL-UNNAMED --add-opens jdk.management/com.sun.management.internal=ALL-UNNAMED"
else
  export BC_AGENT_OPTS="-Dprogram.name=${name} -Dhazelcast.logging.type=log4j2"
fi

exec ${cmd} "$@"

# end