apply plugin: 'groovy'
apply plugin: 'maven'
apply plugin: 'signing'
apply plugin: 'clone-artifacts'

configurations {
    gradleApi
    compile.extendsFrom gradleApi
    gradleApi.extendsFrom groovy
}

sourceSets {
    main {
        groovy.srcDirs 'src/main/groovy', 'src/fromGradle/groovy'
        resources.srcDirs 'src/main/resources', 'src/fromGradle/resources'
    }
    buildTest {
        groovy.srcDir file('src/build-test/groovy')
        resources.srcDir file('src/build-test/resources')
    }
    deviceTest {
        groovy.srcDir file('src/device-test/groovy')
        resources.srcDir file('src/device-test/resources')
    }
}

dependencies {
    gradleApi gradleApi()
    groovy localGroovy()
    compile project(':builder')

    compile "com.android.tools:sdklib:$project.ext.baseAndroidVersion"
    compile "com.android.tools:sdk-common:$project.ext.baseAndroidVersion"
    compile "com.android.tools:common:$project.ext.baseAndroidVersion"

    compile "com.android.tools.lint:lint:$project.ext.baseAndroidVersion"
    compile 'net.sf.proguard:proguard-gradle:4.10'

    testCompile 'junit:junit:3.8.1'

    buildTestCompile sourceSets.main.output
    buildTestCompile sourceSets.test.output
    buildTestCompile configurations.testCompile
    buildTestCompile configurations.testRuntime

    deviceTestCompile sourceSets.main.output
    deviceTestCompile sourceSets.test.output
    deviceTestCompile sourceSets.buildTest.output
    deviceTestCompile configurations.testCompile
    deviceTestCompile configurations.testRuntime
}

// configuration for dependencies provided by the runtime,
// in this case proguard.
configurations{
    provided
}

dependencies{
    provided 'net.sf.proguard:proguard-gradle:4.10'
}

//Include provided for compilation
sourceSets.main.compileClasspath += configurations.provided


idea {
    module {
        testSourceDirs += files('src/build-test/groovy', 'src/device-test/groovy').files

        scopes.COMPILE.plus += configurations.provided
    }
}

archivesBaseName = 'gradle'
project.ext.pomName = 'Gradle Plug-in for Android'
project.ext.pomDesc = 'Gradle plug-in to build Android applications.'

apply from: '../publish.gradle'

jar.manifest.attributes("Plugin-Version": version)
publishLocal.dependsOn ':builder:publishLocal'

task buildTest(type: Test, dependsOn: publishLocal) {
    testClassesDir = sourceSets.buildTest.output.classesDir
    classpath = sourceSets.buildTest.runtimeClasspath
    description = "Runs the project build tests. This requires an SDK either from the Android source tree, under out/..., or an env var ANDROID_HOME."
    group = "verification"
    systemProperties['jar.path'] = jar.archivePath
}

task deviceTest(type: Test, dependsOn: publishLocal) {
    testClassesDir = sourceSets.deviceTest.output.classesDir
    classpath = sourceSets.deviceTest.runtimeClasspath
    description = "Runs the device tests. This requires a device."
    group = "verification"
    systemProperties['jar.path'] = jar.archivePath
}

check.dependsOn buildTest


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
}

// add javadoc jar tasks as artifacts
artifacts {
    archives javadocJar
}

