pipeline {
    agent {
        docker {
            image 'openjdk:11-jdk'
        }
    }
    stages {
        stage('Build') {
            steps {
                sh './gradlew build javadoc'
            }
            post {
                success {
                    archiveArtifacts artifacts: 'build/libs/*', fingerprint: true

                    publishHTML target: [
                        allowMissing: false,
                        alwaysLinkToLastBuild: false,
                        keepAll: false,
                        reportDir: 'build/docs/javadoc',
                        reportFiles: 'index.html',
                        reportName: 'JavaDoc'
                    ]
                }
            }
        }
        stage('Publish') {
            when {
                expression {
                    return sh(returnStdout: true, script: 'git tag --contains').trim().length() > 0
                }
            }
            steps {
                sh './gradlew publish'
                withCredentials([string(credentialsId: 'curseforge_key', variable: 'CURSEFORGE_KEY')]) {
                    sh './gradlew -Pcurseforge.api_key="${CURSEFORGE_KEY}" curseforge'
                }
            }
        }
    }
}