#!groovy

pipeline {
    agent {
        label 'linux'
    }
    triggers {
        cron('H 12,0 * * *')
    }
    stages {
        stage('Checkout') {
            when {
                beforeAgent true;
                branch 'main'
            }
            steps {
                sh 'git checkout main'
            }
        }
        stage('Check last Commit') {
            when {
                beforeAgent true;
                branch 'main'
            }
            steps {
                script {
                    def causes = currentBuild.getBuildCauses()
                    echo "Build causes: ${causes}"
                    def causedByScmEvent = causes.any {
                        it._class == 'hudson.triggers.SCMTrigger$SCMTriggerCause' ||
                        it._class == 'jenkins.branch.BranchEventCause'
                    }
                    echo "Caused by SCM event: ${causedByScmEvent}"
                    if (!causedByScmEvent) {
                        echo 'Not triggered by SCM, continuing build'
                    } else if (sh(script: 'git log -1 --pretty=format:"%an"', returnStdout: true).trim() == 'Jenkins') {
                        currentBuild.result = 'ABORTED'
                        error('Last commit was by Jenkins, skipping build')
                    } else {
                        echo 'Last commit was not by Jenkins, continuing build'
                    }
                }
            }
        }
        stage('Compile Adblock List') {
            when {
                beforeAgent true;
                branch 'main'
            }
            steps {
                withGradle {
                    sh './gradlew :compileAdblockList'
                }
                sh '''                    
                    git add out/andysadguardhomeblocklist.txt
                    git commit -m "Update Compiled Adblock List"
                '''
            }
        }
        stage('git push') {
            when {
                beforeAgent true;
                branch 'main'
            }
            steps {
                withCredentials([
                    gitUsernamePassword(credentialsId: 'gitea-jenkins-user-token')
                ]) {
                    sh '''
                        git pull origin main
                        git push
                    '''
                }
            }
        }
    }
    post {
        always {
            deleteDir()
        }
    }
}
