#!/bin/bash
# Shared helpers for jetty-slim scripts.
set -euo pipefail

SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
ROOT_DIR="$(cd "$SCRIPT_DIR/.." && pwd)"
cd "$ROOT_DIR"

if [ -f site.sh ]; then
	# shellcheck disable=SC1091
	source ./site.sh
elif [ -f site.sh.example ]; then
	echo "NOTE: no site.sh — using site.sh.example defaults (copy to site.sh to customize)."
	# shellcheck disable=SC1091
	source ./site.sh.example
fi

: "${USERID:=$(id -u)}"
: "${GROUPID:=$(id -g)}"
export USERID GROUPID
export IMAGE="${IMAGE:-thoughtframe-runtime}"
export TAG="${TAG:-dev}"
export CONTAINER_NAME="${CONTAINER_NAME:-thoughtframe}"
export COMPOSE_PROJECT_NAME="${COMPOSE_PROJECT_NAME:-thoughtframe}"
export HTTP_PORT="${HTTP_PORT:-}"
export TZ="${TZ:-America/Halifax}"
export JAVA_OPTS="${JAVA_OPTS:--Xms512m -Xmx2g}"
export WEBAPP_HOST="${WEBAPP_HOST:-../runtime/webapp}"
export DATA_HOST="${DATA_HOST:-../runtime/data}"
export ELASTIC_HOST="${ELASTIC_HOST:-../runtime/elastic}"
export BOOTSTRAP_WAR_URL="${BOOTSTRAP_WAR_URL:-}"
export NETWORK_NAME="${NETWORK_NAME:-}"
export IPV4_ADDRESS="${IPV4_ADDRESS:-}"
export OPENSEARCH_HTTP_HOST="${OPENSEARCH_HTTP_HOST:-127.0.0.1}"
export OPENSEARCH_HTTP_PORT="${OPENSEARCH_HTTP_PORT:-0}"

COMPOSE=(docker compose -f compose.yml)
if [ -n "${NETWORK_NAME}" ]; then
	if [ -z "${IPV4_ADDRESS}" ]; then
		echo "NETWORK_NAME is set but IPV4_ADDRESS is empty" >&2
		exit 1
	fi
	COMPOSE+=(-f compose.network.yml)
fi
if [ -n "${HTTP_PORT}" ]; then
	COMPOSE+=(-f compose.ports.yml)
fi

compose() {
	# Compose substitutes ${VAR} from this process environment (no .env file).
	"${COMPOSE[@]}" "$@"
}
