#!/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