pipeline {
    agent { label 'macmini' }

    options {
        timeout(time: 15, unit: 'MINUTES')
        timestamps()
        buildDiscarder(logRotator(numToKeepStr: '10'))
        disableConcurrentBuilds()
    }

    triggers {
        cron('H/30 * * * *')
    }

    stages {

        stage('Checkout Code') {
            steps {
                checkout scm
            }
        }

        stage('Setup Python & Install Dependencies') {
            steps {
                sh '''
                    set -e
                    cd "$WORKSPACE"

                    # Crea el venv
                    python3 -m venv venv

                    # Usa python3 -m pip per evitar problemes de shebang amb sh/dash
                    "$WORKSPACE/venv/bin/python3" -m pip install --upgrade pip wheel setuptools

                    "$WORKSPACE/venv/bin/python3" -m pip install -U \
                        atproto \
                        tweety-ns \
                        playwright \
                        httpx \
                        arrow \
                        python-dotenv \
                        moviepy \
                        grapheme

                    # Verificació moviepy
                    "$WORKSPACE/venv/bin/python3" -m pip list | grep moviepy \
                        || { echo 'MoviePy installation failed!'; exit 1; }

                    # Verificació FFmpeg
                    ffmpeg -version \
                        || { echo 'FFmpeg is not installed!'; exit 1; }

                    # Verificació imports
                    "$WORKSPACE/venv/bin/python3" -c "import moviepy;    print('moviepy    OK')"
                    "$WORKSPACE/venv/bin/python3" -c "import atproto;    print('atproto    OK')"
                    "$WORKSPACE/venv/bin/python3" -c "import playwright; print('playwright OK')"

                    # Instal·lació binaris Playwright
                    PLAYWRIGHT_BROWSERS_PATH=/var/jenkins_home/.playwright-browsers \
                        "$WORKSPACE/venv/bin/python3" -m playwright install chromium
                '''
            }
        }
        
        stage('Run Script') {
            steps {
                // Securely inject Jenkins credentials as environment variables
                withCredentials([
                    string(credentialsId: 'TWITTER_USERNAME', variable: 'TWITTER_USERNAME'),
                    string(credentialsId: 'TWITTER_PASSWORD', variable: 'TWITTER_PASSWORD'),
                    string(credentialsId: 'TWITTER_FCB_EMAIL', variable: 'TWITTER_FCB_EMAIL'),
                    string(credentialsId: 'TWITTER_FCB_HANDLE', variable: 'TWITTER_FCB_HANDLE'),
                    string(credentialsId: 'BSKY_MQUB_HANDLE', variable: 'BSKY_MQUB_HANDLE'),
                    string(credentialsId: 'BSKY_MQUB_PASSWORD', variable: 'BSKY_MQUB_PASSWORD')
                ]) {
                    sh '''
                    # Activate the exact same virtual environment so Python finds Playwright and Arrow
                    . venv/bin/activate
                    
                    # Run the daemon with the injected credentials
                    python3 twitter2bsky.py \
                        --twitter-username "$TWITTER_USERNAME" \
                        --twitter-password "$TWITTER_PASSWORD" \
                        --twitter-email "$TWITTER_FCB_EMAIL" \
                        --twitter-handle "$TWITTER_FCB_HANDLE" \
                        --bsky-handle "$BSKY_MQUB_HANDLE" \
                        --bsky-password "$BSKY_MQUB_PASSWORD" \
                        --bsky-base-url https://eurosky.social \
                        --bsky-langs ca
                    '''
                }
            }
        }
    }
}