163 lines
		
	
	
		
			No EOL
		
	
	
		
			4.1 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable file
		
	
	
	
	
			
		
		
	
	
			163 lines
		
	
	
		
			No EOL
		
	
	
		
			4.1 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable file
		
	
	
	
	
| #!/bin/bash
 | |
| 
 | |
| # Load environment variables
 | |
| if [ ! -f ../.env ]; then
 | |
|     echo "Error: .env file not found!"
 | |
|     exit 1
 | |
| fi
 | |
| 
 | |
| source ../.env
 | |
| 
 | |
| # Colors for output
 | |
| GREEN='\033[0;32m'
 | |
| RED='\033[0;31m'
 | |
| YELLOW='\033[1;33m'
 | |
| BLUE='\033[0;34m'
 | |
| NC='\033[0m'
 | |
| 
 | |
| # Function to check if a command was successful
 | |
| check_status() {
 | |
|     if [ $? -eq 0 ]; then
 | |
|         echo -e "${GREEN}✓ $1${NC}"
 | |
|         return 0
 | |
|     else
 | |
|         echo -e "${RED}✗ $1${NC}"
 | |
|         return 1
 | |
|     fi
 | |
| }
 | |
| 
 | |
| # Function to show usage
 | |
| show_usage() {
 | |
|     echo "Usage: $0 [options]"
 | |
|     echo ""
 | |
|     echo "Options:"
 | |
|     echo "  -f, --force       Skip all confirmations"
 | |
|     echo "  -k, --keep-data   Keep existing database data"
 | |
|     echo "  -t, --test-data   Generate test data after reset (basic|extended|stress)"
 | |
|     echo "  -h, --help        Show this help message"
 | |
|     echo ""
 | |
|     echo "Examples:"
 | |
|     echo "  $0                           # Interactive reset"
 | |
|     echo "  $0 -f                        # Force reset without confirmation"
 | |
|     echo "  $0 -t basic                  # Reset and generate basic test data"
 | |
|     echo "  $0 -f -t extended            # Force reset and generate extended test data"
 | |
|     echo "  $0 -k -t stress              # Keep data and add stress test data"
 | |
| }
 | |
| 
 | |
| # Default values
 | |
| FORCE=false
 | |
| KEEP_DATA=false
 | |
| TEST_DATA=""
 | |
| 
 | |
| # Parse command line options
 | |
| while [[ $# -gt 0 ]]; do
 | |
|     case "$1" in
 | |
|         -f|--force)
 | |
|             FORCE=true
 | |
|             shift
 | |
|             ;;
 | |
|         -k|--keep-data)
 | |
|             KEEP_DATA=true
 | |
|             shift
 | |
|             ;;
 | |
|         -t|--test-data)
 | |
|             TEST_DATA="$2"
 | |
|             shift 2
 | |
|             ;;
 | |
|         -h|--help)
 | |
|             show_usage
 | |
|             exit 0
 | |
|             ;;
 | |
|         *)
 | |
|             echo "Error: Unknown option '$1'"
 | |
|             show_usage
 | |
|             exit 1
 | |
|             ;;
 | |
|     esac
 | |
| done
 | |
| 
 | |
| # Confirm reset if not forced
 | |
| if [ "$FORCE" = false ]; then
 | |
|     echo -e "${YELLOW}Warning: This will reset your development environment.${NC}"
 | |
|     if [ "$KEEP_DATA" = false ]; then
 | |
|         echo -e "${RED}ALL DATA WILL BE LOST!${NC}"
 | |
|     fi
 | |
|     read -p "Continue? [y/N] " -n 1 -r
 | |
|     echo
 | |
|     if [[ ! $REPLY =~ ^[Yy]$ ]]; then
 | |
|         echo "Operation cancelled."
 | |
|         exit 1
 | |
|     fi
 | |
| fi
 | |
| 
 | |
| echo -e "${BLUE}Starting environment reset...${NC}"
 | |
| 
 | |
| # Stop containers
 | |
| echo "Stopping containers..."
 | |
| docker-compose down
 | |
| check_status "Stop containers"
 | |
| 
 | |
| # Remove volumes if not keeping data
 | |
| if [ "$KEEP_DATA" = false ]; then
 | |
|     echo "Removing volumes..."
 | |
|     docker-compose down -v
 | |
|     check_status "Remove volumes"
 | |
| fi
 | |
| 
 | |
| # Start containers
 | |
| echo "Starting containers..."
 | |
| docker-compose up -d
 | |
| check_status "Start containers"
 | |
| 
 | |
| # Wait for containers to be ready
 | |
| echo "Waiting for containers to be ready..."
 | |
| sleep 10
 | |
| 
 | |
| # Reset database if not keeping data
 | |
| if [ "$KEEP_DATA" = false ]; then
 | |
|     echo "Resetting database..."
 | |
|     ./manage-db.sh reset -y
 | |
|     check_status "Database reset"
 | |
|     
 | |
|     # Install WordPress
 | |
|     echo "Installing WordPress..."
 | |
|     docker-compose exec wordpress wp core install \
 | |
|         --url=http://localhost:8080 \
 | |
|         --title="HVAC Training Events" \
 | |
|         --admin_user=admin \
 | |
|         --admin_password=admin \
 | |
|         --admin_email=admin@example.com \
 | |
|         --allow-root
 | |
|     check_status "WordPress installation"
 | |
|     
 | |
|     # Install and activate required plugins
 | |
|     echo "Installing required plugins..."
 | |
|     REQUIRED_PLUGINS=(
 | |
|         "the-events-calendar"
 | |
|         "events-calendar-pro"
 | |
|         "event-tickets"
 | |
|         "event-tickets-plus"
 | |
|         "tribe-community-events"
 | |
|     )
 | |
|     
 | |
|     for plugin in "${REQUIRED_PLUGINS[@]}"; do
 | |
|         echo "Installing plugin: $plugin"
 | |
|         docker-compose exec wordpress wp plugin install "$plugin" --allow-root
 | |
|         docker-compose exec wordpress wp plugin activate "$plugin" --allow-root
 | |
|         check_status "Plugin $plugin installation"
 | |
|     done
 | |
| fi
 | |
| 
 | |
| # Generate test data if requested
 | |
| if [ -n "$TEST_DATA" ]; then
 | |
|     echo "Generating test data..."
 | |
|     ./manage-db.sh generate-test-data "$TEST_DATA" -y
 | |
|     check_status "Test data generation"
 | |
| fi
 | |
| 
 | |
| # Verify environment
 | |
| echo "Verifying environment..."
 | |
| ./verify-dev.sh
 | |
| check_status "Environment verification"
 | |
| 
 | |
| echo -e "${GREEN}Environment reset completed!${NC}"  |