#!/bin/sh
# etlworks — Etlworks client (flows as code). Needs Java 17 or newer.
# Uses $JAVA_HOME/bin/java when JAVA_HOME is set, otherwise java on the PATH.

# Resolve this script's folder, following symlinks (e.g. /usr/local/bin/etlworks -> …/etlworks).
SCRIPT="$0"
while [ -h "$SCRIPT" ]; do
  LINK=$(readlink "$SCRIPT")
  case "$LINK" in
    /*) SCRIPT="$LINK" ;;
    *) SCRIPT="$(dirname "$SCRIPT")/$LINK" ;;
  esac
done
DIR=$(cd "$(dirname "$SCRIPT")" && pwd)

if [ -n "$JAVA_HOME" ] && [ -x "$JAVA_HOME/bin/java" ]; then
  JAVA="$JAVA_HOME/bin/java"
elif command -v java >/dev/null 2>&1; then
  JAVA=java
else
  echo "etlworks: Java 17 or newer is required. Install it, or set JAVA_HOME." >&2
  exit 5
fi

VERSION=$("$JAVA" -version 2>&1 | head -1 | sed -E 's/.*version "([0-9]+)(\.[0-9]+)?.*/\1/')
case "$VERSION" in
  1|2|3|4|5|6|7|8|9|10|11|12|13|14|15|16)
    echo "etlworks: Java 17 or newer is required (found $("$JAVA" -version 2>&1 | head -1))." >&2
    exit 5 ;;
esac

exec "$JAVA" ${ETLWORKS_JAVA_OPTS} -cp "$DIR/lib/*" com.etlworks.client.Main "$@"
