#!/usr/bin/env bash
# ============================================================
# build-image.sh — Build y/o push de la imagen CXP
# ============================================================
# Uso:
#   bash build-image.sh                    ← solo build local
#   bash build-image.sh push               ← build + push a registry
#   bash build-image.sh push v1.2.0        ← build + tag + push
# ============================================================
set -euo pipefail

GREEN='\033[0;32m'; CYAN='\033[0;36m'; NC='\033[0m'

ACTION="${1:-build}"
VERSION="${2:-latest}"

# Registry configurable (cambiar a tu Docker Hub o registry privado)
REGISTRY="${DOCKER_REGISTRY:-docker.io/sistemasmb}"
IMAGE_NAME="cxp-app"

SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
REPO_ROOT="$(dirname "$(dirname "$SCRIPT_DIR")")"

cd "$REPO_ROOT"

echo -e "${CYAN}Building${NC} $IMAGE_NAME:$VERSION"
echo "  Contexto: $REPO_ROOT"

# Build
docker build -f Dockerfile.prod \
    -t "${IMAGE_NAME}:latest" \
    -t "${IMAGE_NAME}:${VERSION}" \
    -t "${IMAGE_NAME}:$(date +%Y%m%d)" \
    .

echo -e "${GREEN}✅ Build completado${NC}"
docker images "${IMAGE_NAME}" --format "  {{.Tag}}\t{{.Size}}\t{{.CreatedAt}}"

# Push
if [ "$ACTION" = "push" ]; then
    echo ""
    echo -e "${CYAN}Pushing${NC} a $REGISTRY..."

    docker tag "${IMAGE_NAME}:latest" "${REGISTRY}/${IMAGE_NAME}:latest"
    docker tag "${IMAGE_NAME}:${VERSION}" "${REGISTRY}/${IMAGE_NAME}:${VERSION}"

    docker push "${REGISTRY}/${IMAGE_NAME}:latest"
    docker push "${REGISTRY}/${IMAGE_NAME}:${VERSION}"

    echo -e "${GREEN}✅ Push completado${NC}"
    echo ""
    echo "Para usar desde otro servidor:"
    echo "  docker pull ${REGISTRY}/${IMAGE_NAME}:latest"
    echo ""
    echo "En el .env del cliente, cambiar:"
    echo "  CXP_IMAGE=${REGISTRY}/${IMAGE_NAME}:latest"
fi
