#!/bin/sh
# Minimal Maven Wrapper — downloads Apache Maven on first run and caches it.
set -e

MAVEN_VERSION="3.9.9"
MAVEN_CACHE="${HOME}/.m2/wrapper/dists/apache-maven-${MAVEN_VERSION}"
MAVEN_URL="https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/${MAVEN_VERSION}/apache-maven-${MAVEN_VERSION}-bin.tar.gz"

if [ ! -f "${MAVEN_CACHE}/bin/mvn" ]; then
  MAVEN_TMP="${MAVEN_CACHE}.tmp.$$"
  mkdir -p "$(dirname "${MAVEN_CACHE}")"
  if mkdir "${MAVEN_CACHE}.lock" 2>/dev/null; then
    echo "Downloading Apache Maven ${MAVEN_VERSION}..." >&2
    mkdir -p "${MAVEN_TMP}"
    if command -v curl > /dev/null 2>&1; then
      curl -fsSL "${MAVEN_URL}" | tar -xz --strip-components=1 -C "${MAVEN_TMP}"
    elif command -v wget > /dev/null 2>&1; then
      wget -qO- "${MAVEN_URL}" | tar -xz --strip-components=1 -C "${MAVEN_TMP}"
    else
      rm -rf "${MAVEN_TMP}" "${MAVEN_CACHE}.lock"
      echo "ERROR: curl or wget is required to download Maven" >&2
      exit 1
    fi
    mv "${MAVEN_TMP}" "${MAVEN_CACHE}"
    rm -rf "${MAVEN_CACHE}.lock"
  else
    while [ -d "${MAVEN_CACHE}.lock" ]; do sleep 0.2; done
  fi
fi

exec "${MAVEN_CACHE}/bin/mvn" "$@"
