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

repo_root=$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")/.." && pwd)
cache_dir=${IAM_GRADLE_CACHE:-${XDG_CACHE_HOME:-$HOME/.cache}/iam-login/gradle}
mkdir -p -- "$cache_dir"
cache_dir=$(cd -- "$cache_dir" && pwd)
docker_cmd=(docker)
if [[ ${IAM_DOCKER_USE_SUDO:-0} == 1 ]]; then
  docker_cmd=(sudo -n docker)
fi
if (($# == 0)); then
  set -- test
fi

"$repo_root/scripts/frontend-in-docker"

# Linux host networking is needed for Testcontainers' published ports.
exec "${docker_cmd[@]}" run --rm --network host \
  --cpus "${IAM_BUILD_CPUS:-4}" --memory "${IAM_BUILD_MEMORY:-8g}" \
  --user "$(id -u):$(id -g)" \
  --group-add "$(stat -c %g /var/run/docker.sock)" \
  -e LANG=C.UTF-8 \
  -e HOME=/gradle \
  -e JAVA_TOOL_OPTIONS=-Duser.home=/gradle \
  -e GRADLE_USER_HOME=/gradle \
  -e TESTCONTAINERS_HOST_OVERRIDE=127.0.0.1 \
  -v "$cache_dir:/gradle" \
  -v "$repo_root:/workspace" \
  -v /var/run/docker.sock:/var/run/docker.sock \
  -w /workspace --entrypoint /workspace/gradlew \
  ghcr.io/graalvm/native-image-community@sha256:0d936f32bb8acb5bc60c41b33e05f064d7a6aaf36b726538296c54949bd4a3c0 \
  --no-daemon --max-workers="${IAM_BUILD_CPUS:-4}" "$@"
