#!/bin/bash
# ============================================
# BreakPilot Environment Switcher
# ============================================
# Usage: ./scripts/env-switch.sh [dev|staging|prod]
# ============================================

set -e

ENV=${1:-dev}
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
ROOT_DIR="$(dirname "$SCRIPT_DIR")"

# Colors
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
RED='\033[0;31m'
BLUE='\033[0;34m'
NC='\033[0m' # No Color

cd "$ROOT_DIR"

case $ENV in
    dev|development)
        ENV_FILE=".env.dev"
        ENV_NAME="Development"
        COLOR=$GREEN
        ;;
    staging)
        ENV_FILE=".env.staging"
        ENV_NAME="Staging"
        COLOR=$YELLOW
        ;;
    prod|production)
        ENV_FILE=".env.prod"
        ENV_NAME="Production"
        COLOR=$RED
        echo -e "${RED}========================================${NC}"
        echo -e "${RED}  WARNING: Production environment!${NC}"
        echo -e "${RED}========================================${NC}"
        read -p "Are you sure? (yes/no): " CONFIRM
        if [ "$CONFIRM" != "yes" ]; then
            echo "Aborted."
            exit 0
        fi
        ;;
    *)
        echo -e "${RED}Unknown environment: $ENV${NC}"
        echo ""
        echo "Usage: $0 [dev|staging|prod]"
        echo ""
        echo "Available environments:"
        echo "  dev      - Development (default)"
        echo "  staging  - Staging/Testing"
        echo "  prod     - Production (use with caution!)"
        exit 1
        ;;
esac

# Check if env file exists
if [ ! -f "$ENV_FILE" ]; then
    if [ -f ".env.example" ]; then
        echo -e "${YELLOW}Creating $ENV_FILE from .env.example...${NC}"
        cp .env.example "$ENV_FILE"
        echo -e "${YELLOW}Please edit $ENV_FILE with appropriate values.${NC}"
    else
        echo -e "${RED}Error: $ENV_FILE not found and no .env.example available.${NC}"
        exit 1
    fi
fi

# Copy to .env
echo -e "${COLOR}Switching to $ENV_NAME environment...${NC}"
cp "$ENV_FILE" .env

echo -e "${GREEN}✓ Environment switched to: $ENV_NAME${NC}"
echo ""
echo "To start services:"
case $ENV in
    dev|development)
        echo "  docker compose up -d"
        ;;
    staging)
        echo "  docker compose -f docker-compose.yml -f docker-compose.staging.yml up -d"
        echo "  Or: ./scripts/start.sh staging"
        ;;
    prod|production)
        echo "  docker compose -f docker-compose.yml -f docker-compose.prod.yml up -d"
        echo "  Or: ./scripts/start.sh prod"
        ;;
esac
