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

# ubicacion del proyecto
PROJECT_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"

# cargar las variables desde el env
ENV_FILE="$PROJECT_ROOT/.env.production"

# carga si el env existe (si existe estamos desde local)
if [ -f "$ENV_FILE" ]; then
  echo "📄 Cargando variables desde .env"
  set -a
  source "$ENV_FILE"
  set +a
else
  echo "ℹ️ No hay .env, usando variables de entorno"
fi

# validacion de las variables
: "${REGISTRY:?REGISTRY no definido}"
: "${IMAGE_NAME:?IMAGE_NAME no definido}"

# crea el nombre de la version con la fecha y hora de buildeo
VER=$(date +"%d%m%Y-%H%M%S")
VERSION="$VER"

if grep -q "^VERSION=" "$ENV_FILE"; then
  sed -i.bak "s/^VERSION=.*/VERSION=${VERSION}/" "$ENV_FILE"
else
  echo "VERSION=${VERSION}" >> "$ENV_FILE"
fi
echo "🔨 Building version: $VERSION"

IMAGE_FULL="${REGISTRY}/${IMAGE_NAME}"

# build de la img de prod
echo "🏗️ Build imagen con docker compose"
DOCKER_DEFAULT_PLATFORM=linux/amd64 docker compose -f docker-compose.build.yaml --env-file .env.production build

docker tag "${IMAGE_FULL}:latest" "${IMAGE_FULL}:${VERSION}"

echo "✅ Build completado"
echo "   - ${IMAGE_FULL}:${VERSION}"
echo "   - ${IMAGE_FULL}:latest"
