#!/usr/bin/env bash set -euo pipefail RELEASE_NAME="${1:-rel_$(date -u +%Y-%m-%d)_messages-v1}" TABLE="${MESSAGES_TABLE:-lake.db1.messages}" MANIFEST_LOCAL="${2:-./manifests/${RELEASE_NAME}.json}" DESCRIPTION="${RELEASE_DESCRIPTION:-Messages release for ${TABLE}}" CREATED_BY="${RELEASE_CREATED_BY:-${USER:-unknown}}" NESSIE_URI="${NESSIE_URI:-http://nessie:19120/api/v2}" RELEASES_TABLE="${RELEASES_TABLE:-lake.db1.releases_v2}" CONTAINER_NAME="${SPARK_CONTAINER_NAME:-spark}" SPARK_PROPS="${SPARK_PROPS:-/opt/lakehouse/spark-conf/lakehouse-spark-defaults.conf}" PACKAGES="${SPARK_PACKAGES:-org.apache.iceberg:iceberg-spark-runtime-3.5_2.12:1.10.1,org.apache.iceberg:iceberg-aws-bundle:1.10.1,org.projectnessie.nessie-integrations:nessie-spark-extensions-3.5_2.12:0.104.5}" SCRIPT_LOCAL="${SCRIPT_LOCAL:-./create_release_manifest.py}" SCRIPT_REMOTE="/tmp/create_release_manifest.py" MANIFEST_REMOTE="/tmp/${RELEASE_NAME}.json" if [[ ! -f "$SCRIPT_LOCAL" ]]; then echo "create_release_manifest.py not found at: $SCRIPT_LOCAL" >&2 exit 1 fi mkdir -p "$(dirname "$MANIFEST_LOCAL")" docker cp "$SCRIPT_LOCAL" "$CONTAINER_NAME":"$SCRIPT_REMOTE" docker exec \ -e AWS_REGION="${AWS_REGION:-us-east-1}" \ -e AWS_DEFAULT_REGION="${AWS_DEFAULT_REGION:-us-east-1}" \ "$CONTAINER_NAME" \ /opt/spark/bin/spark-submit \ --properties-file "$SPARK_PROPS" \ --packages "$PACKAGES" \ "$SCRIPT_REMOTE" \ --release-name "$RELEASE_NAME" \ --table "$TABLE" \ --nessie-uri "$NESSIE_URI" \ --manifest-out "$MANIFEST_REMOTE" \ --description "$DESCRIPTION" \ --created-by "$CREATED_BY" \ --releases-table "$RELEASES_TABLE" docker cp "$CONTAINER_NAME":"$MANIFEST_REMOTE" "$MANIFEST_LOCAL" echo "[DONE] Saved manifest: $MANIFEST_LOCAL"