#!/bin/bash

# Auto Clicker EC2 Deployment Script
# This script automates the deployment of the auto-clicker application on AWS EC2 Ubuntu

set -e  # Exit on any error

echo "🚀 Starting Auto Clicker deployment on EC2..."

# Colors for output
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
NC='\033[0m' # No Color

# Function to print colored output
print_status() {
    echo -e "${GREEN}✅ $1${NC}"
}

print_warning() {
    echo -e "${YELLOW}⚠️  $1${NC}"
}

print_error() {
    echo -e "${RED}❌ $1${NC}"
}

# Update system
print_status "Updating system packages..."
sudo apt update && sudo apt upgrade -y

# Install dependencies
print_status "Installing system dependencies..."
sudo apt install -y git python3 python3-pip python3-venv python3-tk xvfb x11-utils libxkbcommon-x11-0 awscli

# Set up project directory
PROJECT_DIR="$HOME/auto_clicker"
if [ -d "$PROJECT_DIR" ]; then
    print_warning "Project directory already exists. Updating..."
    cd "$PROJECT_DIR"
    git pull
else
    print_status "Cloning repository..."
    cd "$HOME"
    
    # Prompt for repository URL
    echo "Please enter your Bitbucket repository URL:"
    echo "SSH format: git@bitbucket.org:username/auto_clicker.git"
    echo "HTTPS format: https://username@bitbucket.org/username/auto_clicker.git"
    read -p "Repository URL: " REPO_URL
    
    git clone "$REPO_URL"
fi

cd "$PROJECT_DIR"

# Set up Python virtual environment
print_status "Setting up Python virtual environment..."
if [ ! -d "venv" ]; then
    python3 -m venv venv
fi

source venv/bin/activate

# Install Python dependencies
print_status "Installing Python dependencies..."
pip install --upgrade pip
pip install -r requirements.txt

# Set up environment variables
print_status "Configuring environment variables..."
export ENV=qa
export AWS_REGION=ap-southeast-2

# Add to bashrc if not already there
if ! grep -q "export ENV=qa" ~/.bashrc; then
    echo "export ENV=qa" >> ~/.bashrc
    echo "export AWS_REGION=ap-southeast-2" >> ~/.bashrc
    echo "source ~/auto_clicker/venv/bin/activate" >> ~/.bashrc
fi

# Test AWS credentials
print_status "Testing AWS credentials..."
if aws sts get-caller-identity > /dev/null 2>&1; then
    print_status "AWS credentials are working!"
else
    print_error "AWS credentials not configured properly. Please check IAM role attachment."
    exit 1
fi

# Test database configuration
print_status "Testing database configuration..."
cd mysql
if python3 test_config.py; then
    print_status "Database configuration is working!"
else
    print_error "Database configuration failed. Please check AWS Parameter Store and Secrets Manager."
    exit 1
fi

cd "$PROJECT_DIR"

# Create systemd service file (optional)
print_status "Creating systemd service file..."
sudo tee /etc/systemd/system/autoclicker.service > /dev/null <<EOF
[Unit]
Description=Auto Clicker Application
After=network.target

[Service]
Type=simple
User=ubuntu
WorkingDirectory=$PROJECT_DIR
Environment=ENV=qa
Environment=AWS_REGION=ap-southeast-2
Environment=DISPLAY=:99
ExecStartPre=/bin/bash -c 'pkill Xvfb || true; /usr/bin/Xvfb :99 -screen 0 1024x768x24 -ac -nolisten tcp -dpi 96 +extension RANDR &'
ExecStart=/bin/bash $PROJECT_DIR/start_app.sh
Restart=always
RestartSec=10

[Install]
WantedBy=multi-user.target
EOF

print_status "Reloading systemd..."
sudo systemctl daemon-reload

print_status "✨ Deployment completed successfully!"
echo ""
echo "To run the application:"
echo "  cd ~/auto_clicker"
echo "  source venv/bin/activate"
echo "  python3 main.py"
echo ""
echo "To run as a service:"
echo "  sudo systemctl enable autoclicker"
echo "  sudo systemctl start autoclicker"
echo "  sudo systemctl status autoclicker"
echo ""
echo "To view logs:"
echo "  sudo journalctl -u autoclicker -f"
