apply plugin: 'groovy'
apply plugin: 'clone-artifacts'
apply plugin: 'idea'
apply plugin: 'jacoco'

// Extract gradle libraries to ensure gradle-core is compatible with older version.
String gradleVersion = "2.8"
File gradleBinary = file("$rootProject.projectDir/external/gradle/gradle-$gradleVersion-all.zip")
File gradleLib = file("$rootProject.ext.androidHostOut/alternate-gradle/gradle-$gradleVersion/lib")

task extractGradleLibs(type: Copy) {
    from zipTree(gradleBinary)
    into gradleLib.parentFile.parentFile
}

task setupGradleInIde {
    dependsOn extractGradleLibs
}

dependencies {
    compile fileTree(dir:gradleLib)
    compile project(':base:gradle-core')

    testCompile 'junit:junit:4.12'
    testCompile project(':base:project-test-lib')
}

group = 'com.android.tools.build'
archivesBaseName = 'gradle-experimental'
version = rootProject.ext.experimentalVersion

project.ext.pomName = 'Gradle Plug-in for Android Using Component Model'
project.ext.pomDesc = 'Gradle plug-in to build Android applications.'

apply from: "$rootDir/buildSrc/base/publish.gradle"
apply from: "$rootDir/buildSrc/base/bintray.gradle"

jar.manifest.attributes("Plugin-Version": version)
jar.manifest.attributes("Inception-Date":"${Calendar.getInstance().get(Calendar.YEAR)}:" +
        "${Calendar.getInstance().get(Calendar.MONTH)}:${Calendar.getInstance().get(Calendar.DATE)}")


test {
    environment("CUSTOM_REPO", rootProject.file("../out/repo"))

    testLogging {
        events "failed"
    }

    maxParallelForks = Runtime.runtime.availableProcessors() / 2
}

groovydoc {
    exclude     "**/internal/**"
    includePrivate false

    docTitle "Gradle Plugin for Android"
    header ""
    footer "Copyright (C) 2012 The Android Open Source Project"
    overview ""
}

task javadocJar(type: Jar, dependsOn:groovydoc) {
    classifier  'javadoc'
    from        groovydoc.destinationDir
}

// Only package JavaDoc if using --init-script=buildSrc/base/release.gradle
if (project.has("release")) {
  artifacts {
    archives javadocJar
  }
}
