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

IMAGE_TAG=${IMAGE_TAG:-"dev-v1"}
IMAGE_REPO="tidbcloud-dev-registry.ap-southeast-1.cr.aliyuncs.com/tidbcloud/nextgen-metering-server"

ROOT=$(cd "$(dirname "${BASH_SOURCE[0]}")"/../../../ && pwd)
PKG_DIR="${ROOT}/build/package/nextgen"
BIN_SOURCE="${ROOT}/build/bin/x86/nextgen-metering-server"
LIB_SOURCE="${ROOT}/build/so/libdeltalake_golang.so"
DUCKDB_EXTENSION_SOURCE="${ROOT}/build/so/delta.duckdb_extension"
PKG_BIN="${PKG_DIR}/nextgen-metering-server"
PKG_LIB="${PKG_DIR}/libdeltalake_golang.so"
PKG_EXTENSION_DIR="${PKG_DIR}/ops/extension"
PKG_EXTENSION="${PKG_EXTENSION_DIR}/delta.duckdb_extension"

cleanup() {
    rm -f "${PKG_BIN}" "${PKG_LIB}" "${PKG_EXTENSION}" || true
}
trap cleanup EXIT

cd "${PKG_DIR}"

echo "🚀 Packaging and deploying NextGen metering to Alicloud ACR..."
echo "Image tag: ${IMAGE_TAG}"
echo "Image repo: ${IMAGE_REPO}"

echo ""
echo "📦 Step 1: Preparing package files..."

# Verify required files exist
if [[ ! -f "${BIN_SOURCE}" ]]; then
    echo "❌ Error: Cross-compiled binary not found at ${BIN_SOURCE}"
    echo "💡 Please run './build_cross_compile.sh' first to generate the binary"
    exit 1
fi

if [[ ! -f "${LIB_SOURCE}" ]]; then
    echo "❌ Error: Rust library not found at ${LIB_SOURCE}"
    echo "💡 Please run './build_rust_lib.sh' first to generate the library"
    exit 1
fi

if [[ ! -f "${DUCKDB_EXTENSION_SOURCE}" ]]; then
    echo "❌ Error: DuckDB extension not found at ${DUCKDB_EXTENSION_SOURCE}"
    echo "💡 Please ensure the extension is built and located in 'build/so/delta.duckdb_extension'"
    exit 1
fi

# Copy artifacts into packaging directory
cp "${BIN_SOURCE}" "${PKG_BIN}"
cp "${LIB_SOURCE}" "${PKG_LIB}"
mkdir -p "${PKG_EXTENSION_DIR}"
cp "${DUCKDB_EXTENSION_SOURCE}" "${PKG_EXTENSION}"

echo ""
echo "🐳 Step 2: Building Docker image..."
docker build --platform linux/amd64 -t "${IMAGE_REPO}:${IMAGE_TAG}" .

echo ""
echo "☁️  Step 3: Pushing Docker image to Alicloud ACR..."
docker push "${IMAGE_REPO}:${IMAGE_TAG}"

echo ""
echo "🧹 Step 4: Cleaning up temporary files..."
# cleanup handled by trap

echo ""
echo "✅ Successfully built and pushed nextgen-metering-server:${IMAGE_TAG}"
echo "📝 Cross-compiled artifacts remain available at:"
echo "   - ${BIN_SOURCE}"
echo "   - ${LIB_SOURCE}"
echo "   - ${DUCKDB_EXTENSION_SOURCE}"
