buildscript {
    repositories {
        mavenLocal()        // for local testing
        maven { url "https://plugins.gradle.org/m2/" }
    }
    dependencies {
        classpath "org.shipkit:shipkit-changelog:1.2.0"
        classpath "org.shipkit:shipkit-auto-version:1.2.2"
        classpath "io.github.gradle-nexus:publish-plugin:1.0.0"
    }
}

apply plugin: "io.github.gradle-nexus.publish-plugin"
apply plugin: 'org.shipkit.shipkit-auto-version'
apply plugin: "org.shipkit.shipkit-changelog"
apply plugin: "org.shipkit.shipkit-github-release"

allprojects {
    group = 'org.mockito.kotlin'
}

tasks.named("generateChangelog") {
    previousRevision = project.ext.'shipkit-auto-version.previous-version'
    githubToken = System.getenv("GITHUB_TOKEN")
    repository = "mockito/mockito-kotlin"
    releaseTag = project.version
}

tasks.named("githubRelease") {
    def genTask = tasks.named("generateChangelog").get()
    dependsOn genTask
    repository = genTask.repository
    changelog = genTask.outputFile
    githubToken = System.getenv("GITHUB_TOKEN")
    newTagRevision = System.getenv("GITHUB_SHA")
    releaseTag = project.version
    releaseName = project.version
}

nexusPublishing {
    repositories {
        if (System.getenv("NEXUS_TOKEN_PWD")) {
            sonatype {
                // Publishing to: https://s01.oss.sonatype.org (faster instance)
                nexusUrl = uri("https://s01.oss.sonatype.org/service/local/")
                snapshotRepositoryUrl = uri("https://s01.oss.sonatype.org/content/repositories/snapshots/")

                username = System.getenv("NEXUS_TOKEN_USER")
                password = System.getenv("NEXUS_TOKEN_PWD")
            }
        }
    }
}

def isSnapshot = version.endsWith("-SNAPSHOT")

if (isSnapshot) {
    println "Building a -SNAPSHOT version (Github release and Maven Central tasks are skipped)"
    tasks.named("githubRelease") {
        //snapshot versions do not produce changelog / Github releases
        enabled = false
    }
    tasks.named("closeAndReleaseStagingRepository") {
        //snapshot binaries are available in Sonatype without the need to close the staging repo
        enabled = false
    }
}

tasks.register("releaseSummary") {
    doLast {
        if (isSnapshot) {
            println "RELEASE SUMMARY\n" +
                    "  SNAPSHOTS released to: https://s01.oss.sonatype.org/content/repositories/snapshots/org/mockito/kotlin/mockito-kotlin\n" +
                    "  Release to Maven Central: SKIPPED FOR SNAPSHOTS\n" +
                    "  Github releases: SKIPPED FOR SNAPSHOTS"
        } else {
            println "RELEASE SUMMARY\n" +
                    "  Release to Maven Central (available after delay): https://repo1.maven.org/maven2/org/mockito/kotlin/mockito-kotlin/\n" +
                    "  Github releases: https://github.com/mockito/mockito-kotlin/releases"
        }
    }
}
