import com.gradle.publish.DependenciesBuilder

apply plugin: 'java'
apply plugin: 'kotlin'


apply plugin: 'com.github.johnrengelman.shadow'
apply plugin: "com.gradle.plugin-publish"

sourceCompatibility = 1.8

tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile).all {
    kotlinOptions {
        freeCompilerArgs += "-Xjsr305=strict"
        languageVersion = "1.2"
        apiVersion = "1.1"
        jvmTarget = "1.8"
    }
}

dependencies {
    testCompile group: 'junit', name: 'junit', version: '4.12'

    shadow group: 'org.jetbrains.kotlin', name: 'kotlin-stdlib', version: kotlin_for_gradle_runtime_version
    shadow group: 'org.jetbrains.kotlin', name: 'kotlin-reflect', version: kotlin_for_gradle_runtime_version

    compile project(":integration")

    compileOnly gradleApi()
    compileOnly localGroovy()
}

task sourceJar(type: Jar) {
    from sourceSets.main.allSource
}

processResources {
    eachFile {
        if (it.name == "org.jetbrains.dokka.properties") {
            it.filter { line ->
                line.replace("<version>", dokka_version)
            }
        }
    }
}

shadowJar {
    baseName = 'dokka-gradle-plugin'
    classifier = ''
}

apply plugin: 'maven-publish'

publishing {
    publications {
        dokkaGradlePlugin(MavenPublication) { publication ->

            artifactId = 'dokka-gradle-plugin'

            artifact sourceJar {
                classifier "sources"
            }

            project.shadow.component(publication)
        }
    }
}

bintrayPublication(project, ['dokkaGradlePlugin'])

configurations.archives.artifacts.clear()
artifacts {
    archives shadowJar
}

pluginBundle {
    website = 'http://www.kotlinlang.org/'
    vcsUrl = 'https://github.com/kotlin/dokka.git'
    description = 'Dokka, the Kotlin documentation tool'
    tags = ['dokka', 'kotlin', 'kdoc']

    plugins {
        dokkaGradlePlugin {
            id = 'org.jetbrains.dokka'
            displayName = 'Dokka plugin'
        }
    }

    withDependencies { List<Dependency> list ->
        list.clear()
        def builder = new DependenciesBuilder()
        builder.addUniqueScopedDependencies(list, configurations.shadow, "compile")
    }

    mavenCoordinates {
        groupId = "org.jetbrains.dokka"
        artifactId = "dokka-gradle-plugin"
    }
}