#!/usr/bin/env python3
"""
Setup script for AI News Digest Bot
Prepares the environment and validates configuration.
"""

import os
import sys
import json
from pathlib import Path

def main():
    """Setup and validate the AI News Digest Bot environment."""
    
    print("🤖 AI News Digest Bot Setup")
    print("=" * 40)
    
    # Get skill directory
    skill_dir = Path(__file__).parent.parent
    
    # Create necessary directories
    directories = ['cache', 'output', 'logs']
    for directory in directories:
        dir_path = skill_dir / directory
        dir_path.mkdir(exist_ok=True)
        print(f"✅ Created directory: {directory}/")
    
    # Make scripts executable
    scripts_dir = skill_dir / 'scripts'
    for script in scripts_dir.glob('*.py'):
        os.chmod(script, 0o755)
        print(f"✅ Made executable: {script.name}")
    
    # Check dependencies
    print("\n📦 Checking dependencies...")
    
    required_packages = ['feedparser', 'requests', 'dateutil']
    missing_packages = []
    
    for package in required_packages:
        try:
            if package == 'dateutil':
                import dateutil
            else:
                __import__(package)
            print(f"✅ {package}")
        except ImportError:
            missing_packages.append(package)
            print(f"❌ {package} (missing)")
    
    if missing_packages:
        print(f"\n⚠️  Missing packages: {', '.join(missing_packages)}")
        print("Install with: pip install -r requirements.txt")
    
    # Check configuration
    print("\n⚙️  Checking configuration...")
    
    config_checks = {
        'OPENAI_API_KEY': 'OpenAI API key for AI filtering',
        'DISCORD_WEBHOOK': 'Discord webhook URL (optional)',
        'TELEGRAM_BOT_TOKEN': 'Telegram bot token (optional)',
        'TELEGRAM_CHAT_ID': 'Telegram chat ID (optional)'
    }
    
    configured = 0
    for env_var, description in config_checks.items():
        if os.getenv(env_var):
            print(f"✅ {env_var}")
            configured += 1
        else:
            print(f"⚪ {env_var} - {description}")
    
    # Validate sources file
    print("\n📰 Checking news sources...")
    sources_file = skill_dir / 'references' / 'sources.json'
    
    if sources_file.exists():
        try:
            with open(sources_file) as f:
                sources_data = json.load(f)
                sources = sources_data.get('sources', [])
                print(f"✅ Found {len(sources)} news sources configured")
        except json.JSONDecodeError as e:
            print(f"❌ Error parsing sources.json: {e}")
    else:
        print("❌ sources.json not found")
    
    # Provide next steps
    print("\n🚀 Next Steps:")
    print("1. Install missing dependencies: pip install -r requirements.txt")
    print("2. Set environment variables (see deployment.md)")
    print("3. Test RSS aggregation: python3 scripts/run_digest.py test rss")
    print("4. Run full pipeline: python3 scripts/run_digest.py run")
    
    if configured == 0:
        print("\n⚠️  No API keys configured. The bot will use fallback scoring.")
        print("   For best results, configure at least OPENAI_API_KEY")
    elif configured < len(config_checks):
        print(f"\n📋 Configuration: {configured}/{len(config_checks)} items set")
        print("   Set more environment variables for full functionality")
    else:
        print("\n🎉 Configuration complete! Ready to generate digests.")
    
    print("\nFor detailed setup instructions, see references/deployment.md")

if __name__ == "__main__":
    main()