#!/usr/bin/env sh

#
# FablePool Android Gradle launcher.
#
# This launcher uses the normal Gradle wrapper when gradle-wrapper.jar is present.
# Source-only milestone bundles cannot reliably carry binary wrapper jars, so it
# also supports a deterministic fallback that downloads the distribution declared
# in gradle/wrapper/gradle-wrapper.properties via Python stdlib code.
#

set -eu

APP_HOME=$(
  CDPATH= cd "$(dirname "$0")" >/dev/null 2>&1
  pwd -P
)

WRAPPER_JAR="$APP_HOME/gradle/wrapper/gradle-wrapper.jar"
BOOTSTRAP_SCRIPT="$APP_HOME/gradle/wrapper/bootstrap-gradle.py"

find_java() {
  if [ -n "${JAVA_HOME:-}" ] && [ -x "$JAVA_HOME/bin/java" ]; then
    printf '%s\n' "$JAVA_HOME/bin/java"
    return 0
  fi

  if command -v java >/dev/null 2>&1; then
    command -v java
    return 0
  fi

  return 1
}

if [ -f "$WRAPPER_JAR" ]; then
  JAVA_EXE=$(find_java || true)
  if [ -z "$JAVA_EXE" ]; then
    echo "ERROR: Java is required to run the Gradle wrapper, but no java executable was found." >&2
    echo "Set JAVA_HOME to a JDK installation or add java to PATH." >&2
    exit 1
  fi

  CLASSPATH=$WRAPPER_JAR
  exec "$JAVA_EXE" ${DEFAULT_JVM_OPTS:-} ${JAVA_OPTS:-} ${GRADLE_OPTS:-} \
    -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@"
fi

PYTHON_EXE=""
if [ -n "${PYTHON:-}" ] && command -v "$PYTHON" >/dev/null 2>&1; then
  PYTHON_EXE=$PYTHON
elif command -v python3 >/dev/null 2>&1; then
  PYTHON_EXE=$(command -v python3)
elif command -v python >/dev/null 2>&1; then
  PYTHON_EXE=$(command -v python)
fi

if [ -n "$PYTHON_EXE" ] && [ -f "$BOOTSTRAP_SCRIPT" ]; then
  if GRADLE_HOME=$("$PYTHON_EXE" "$BOOTSTRAP_SCRIPT" --project-root "$APP_HOME"); then
    GRADLE_BIN="$GRADLE_HOME/bin/gradle"

    if [ -f "$GRADLE_BIN" ] && [ ! -x "$GRADLE_BIN" ]; then
      chmod +x "$GRADLE_BIN" 2>/dev/null || true
    fi

    if [ -x "$GRADLE_BIN" ]; then
      exec "$GRADLE_BIN" "$@"
    fi

    echo "ERROR: Bootstrapped Gradle launcher is not executable: $GRADLE_BIN" >&2
    exit 1
  else
    BOOTSTRAP_STATUS=$?
    echo "WARNING: Gradle self-bootstrap failed with exit code $BOOTSTRAP_STATUS; trying installed Gradle." >&2
  fi
fi

if command -v gradle >/dev/null 2>&1; then
  exec gradle "$@"
fi

cat >&2 <<'EOF'
ERROR: Unable to start Gradle.

This checkout does not contain gradle/wrapper/gradle-wrapper.jar and the fallback
bootstrap could not run. Install one of the following and retry:

  1. Python 3 with network access to the distributionUrl in gradle-wrapper.properties
  2. A compatible Gradle installation available as "gradle" on PATH
  3. The standard Gradle wrapper jar at gradle/wrapper/gradle-wrapper.jar

EOF
exit 1
