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

IMAGE_TAG=${IMAGE_TAG:-"dev-v1"}

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

echo "🚀 Packaging and deploying NextGen metering to AWS ECR..."
echo "Image tag: ${IMAGE_TAG}"

echo ""
echo "📦 Step 1: Preparing package files..."
cd ${ROOT}/build/package/nextgen

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

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

# Copy the cross-compiled nextgen-metering-server binary from x86 directory
cp ${ROOT}/build/bin/x86/nextgen-metering-server ./

# Copy the shared library
cp ${ROOT}/build/so/libdeltalake_golang.so ./

echo ""
echo "🐳 Step 2: Building Docker image..."
docker build --platform linux/amd64 -t 385595570414.dkr.ecr.us-west-2.amazonaws.com/tidbcloud/nextgen-metering-server:${IMAGE_TAG} .

echo ""
echo "☁️  Step 3: Pushing Docker image to AWS ECR..."
docker push 385595570414.dkr.ecr.us-west-2.amazonaws.com/tidbcloud/nextgen-metering-server:${IMAGE_TAG}

echo ""
echo "🧹 Step 4: Cleaning up temporary files..."
rm -f nextgen-metering-server libdeltalake_golang.so

echo ""
echo "✅ Successfully built and pushed nextgen-metering-server:${IMAGE_TAG}"
echo "📝 Cross-compiled binaries remain available at:"
echo "   - ${ROOT}/build/bin/x86/nextgen-metering-server"
echo "   - ${ROOT}/build/so/libdeltalake_golang.so"