pipeline {
    agent any

    options {
        timestamps()
        disableConcurrentBuilds()
    }

    stages {
        stage('Verify source checkout') {
            steps {
                echo 'FlashRead source checkout succeeded.'
                sh 'pwd && git log -1 --oneline'
            }
        }

        stage('Build FlashRead CI image') {
            steps {
                script {
                    def ciImage = docker.build(
                        'fast_reader-ci:latest',
                        '-f Dockerfile.ci .'
                    )
                    echo "Built CI image: ${ciImage.id}"
                }
            }
        }

        stage('Inspect build environment') {
            steps {
                sh '''
                    echo "=== Build environment ==="
                    echo

                    for tool in git go node npm wails syft grype docker; do
                        if command -v "$tool" >/dev/null 2>&1; then
                            echo "[FOUND] $tool"
                            "$tool" --version 2>&1 | head -n 1 || true
                        else
                            echo "[MISSING] $tool"
                        fi
                    done
                '''
            }
        }
        stage('Build FlashRead') {
            agent {
                docker {
                    image 'fast_reader-ci:latest'
                    reuseNode true
                }
            }
            steps {
                sh '''
                    echo "=== Go tests ==="
                    go test ./...

                    echo "=== Frontend dependencies ==="
                    cd frontend
                    npm ci

                    echo "=== Frontend build ==="
                    npm run build

                    cd ..

                    echo "=== Wails build ==="
                    wails build -tags webkit2_41
                '''
            }
        }
    }

    post {
        success {
            echo 'FlashRead CI environment check completed successfully.'
        }
        failure {
            echo 'FlashRead CI environment check failed.'
        }
    }
}
