"""Quick Start Script - Set up and run the platform."""
import subprocess
import sys
import os
from pathlib import Path


def run_command(cmd, description, cwd=None):
    """Run a command and print status.
    
    Args:
        cmd: Command to run
        description: Description to print
        cwd: Working directory
    """
    print(f"\n{'='*60}")
    print(f"📌 {description}")
    print(f"{'='*60}")
    
    try:
        result = subprocess.run(
            cmd,
            shell=True,
            cwd=cwd,
            capture_output=True,
            text=True
        )
        
        if result.returncode == 0:
            print(f"✅ Success!")
            if result.stdout:
                print(result.stdout)
        else:
            print(f"❌ Failed!")
            if result.stderr:
                print(result.stderr)
            return False
            
    except Exception as e:
        print(f"❌ Error: {e}")
        return False
    
    return True


def main():
    """Main setup function."""
    print("""
    ╔══════════════════════════════════════════════════════════╗
    ║  AI-Powered Content Creation Platform - Quick Start     ║
    ║  Setting up your development environment...              ║
    ╚══════════════════════════════════════════════════════════╝
    """)
    
    base_dir = Path(__file__).parent.parent
    
    # Check Python version
    print(f"\nPython version: {sys.version}")
    if sys.version_info < (3, 9):
        print("⚠️  Warning: Python 3.9+ recommended")
    
    # Step 1: Check if .env exists
    env_file = base_dir / ".env"
    if not env_file.exists():
        print("\n📝 Creating .env file from template...")
        run_command("cp .env.example .env", "Copy environment file", cwd=base_dir)
    else:
        print("\n✅ .env file already exists")
    
    # Step 2: Install dependencies (optional - user should do this in venv)
    print("\n" + "="*60)
    print("📦 Installation Options")
    print("="*60)
    print("""
    To install dependencies, choose one of these methods:
    
    Option 1: Virtual Environment (Recommended)
    -------------------------------------------
    python3 -m venv venv
    source venv/bin/activate  # On Windows: venv\\Scripts\\activate
    pip install -r requirements.txt
    
    Option 2: System-wide (Not recommended)
    ---------------------------------------
    pip install -r requirements.txt
    
    Option 3: Docker (Coming soon)
    -----------------------------
    docker-compose up -d
    """)
    
    install = input("\nWould you like to check module availability? (y/n): ").lower().strip()
    
    if install == 'y':
        print("\n�� Checking core modules...")
        modules_to_check = ['fastapi', 'sqlalchemy', 'pydantic']
        
        for module in modules_to_check:
            try:
                __import__(module)
                print(f"✅ {module} - installed")
            except ImportError:
                print(f"❌ {module} - NOT installed")
    
    # Step 3: Initialize database
    print("\n" + "="*60)
    print("🗄️  Database Initialization")
    print("="*60)
    
    init_db = input("\nInitialize database now? (y/n): ").lower().strip()
    
    if init_db == 'y':
        print("\n Creating database tables...")
        result = run_command(
            f"{sys.executable} scripts/init_db.py",
            "Initialize database",
            cwd=base_dir
        )
        
        if result:
            # Create admin user
            create_admin = input("\nCreate admin user? (y/n): ").lower().strip()
            
            if create_admin == 'y':
                email = input("Admin email: ")
                username = input("Admin username: ")
                password = input("Admin password: ")
                
                run_command(
                    f"{sys.executable} scripts/create_admin.py --email {email} --username {username} --password {password}",
                    "Create admin user",
                    cwd=base_dir
                )
    
    # Final instructions
    print("""
    ╔══════════════════════════════════════════════════════════╗
    ║                   Setup Complete! 🎉                      ║
    ╚══════════════════════════════════════════════════════════╝
    
    Next Steps:
    -----------
    
    1. Start the API Gateway:
       python gateway/main.py
       
       API will be available at:
       - Main API: http://localhost:8000
       - Documentation: http://localhost:8000/docs
       - ReDoc: http://localhost:8000/redoc
    
    2. (Optional) Start Audio Service:
       python services/audio/api/audio_api.py
       
       Audio service at: http://localhost:8002
    
    3. Test the API:
       See DEVELOPMENT.md for examples
    
    4. Access Interactive Docs:
       Open http://localhost:8000/docs in your browser
    
    For detailed documentation, see:
    - DEVELOPMENT.md - Development guide
    - README.md - Project overview
    - Implementation Plan - Full architecture details
    
    Happy coding! 🚀
    """)


if __name__ == "__main__":
    main()
