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

IMAGE="${IMAGE:-pggraph:pg-matrix}"
PG_VERSIONS="${PG_VERSIONS:-14 15 16 17 18}"
RUN_RUST_TESTS="${RUN_RUST_TESTS:-1}"
RUN_PGRX_SQL="${RUN_PGRX_SQL:-1}"
RUN_GQL_WRITE_MATRIX="${RUN_GQL_WRITE_MATRIX:-1}"
RUN_POSTGRES_SANITIZER="${RUN_POSTGRES_SANITIZER:-0}"
RUN_DURABLE_PROJECTION_MATRIX="${RUN_DURABLE_PROJECTION_MATRIX:-0}"
RUN_PACKAGE_INSTALL_MATRIX="${RUN_PACKAGE_INSTALL_MATRIX:-0}"
RUN_CRASH_MATRIX="${RUN_CRASH_MATRIX:-0}"
RUN_RUNTIME_RESOURCES="${RUN_RUNTIME_RESOURCES:-0}"
RUN_PG_UPGRADE_MATRIX="${RUN_PG_UPGRADE_MATRIX:-0}"
PROFILE_TIMEOUT_SECONDS="${PROFILE_TIMEOUT_SECONDS:-600}"
ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/../../.." && pwd)"
DOCKERFILE="$ROOT_DIR/graph/tests/heavy/Dockerfile.pg-matrix"

docker build \
  --build-arg "PG_VERSIONS=${PG_VERSIONS}" \
  --build-arg "RUN_RUST_TESTS=${RUN_RUST_TESTS}" \
  --build-arg "RUN_PGRX_SQL=${RUN_PGRX_SQL}" \
  --build-arg "RUN_GQL_WRITE_MATRIX=${RUN_GQL_WRITE_MATRIX}" \
  --build-arg "RUN_POSTGRES_SANITIZER=${RUN_POSTGRES_SANITIZER}" \
  --build-arg "RUN_DURABLE_PROJECTION_MATRIX=${RUN_DURABLE_PROJECTION_MATRIX}" \
  --build-arg "RUN_PACKAGE_INSTALL_MATRIX=${RUN_PACKAGE_INSTALL_MATRIX}" \
  --build-arg "RUN_CRASH_MATRIX=${RUN_CRASH_MATRIX}" \
  --build-arg "RUN_RUNTIME_RESOURCES=${RUN_RUNTIME_RESOURCES}" \
  --build-arg "RUN_PG_UPGRADE_MATRIX=${RUN_PG_UPGRADE_MATRIX}" \
  --build-arg "PROFILE_TIMEOUT_SECONDS=${PROFILE_TIMEOUT_SECONDS}" \
  -f "$DOCKERFILE" \
  -t "$IMAGE" \
  "$ROOT_DIR"

echo "Docker PostgreSQL matrix passed for versions: $PG_VERSIONS"
