buildscript {
    repositories {
        maven { url '../../../../out/host/gradle/repo' }
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:0.7.0-SNAPSHOT'
    }
}
apply plugin: 'android'

android {
    compileSdkVersion 15
    buildToolsVersion "18.0.1"
}


public class GenerateCode extends DefaultTask {
    @Input
    String value

    @OutputFile
    File outputFile

    @TaskAction
    void taskAction() {
        getOutputFile().text =
            "package com.custom;\n" +
            "public class Foo {\n" +
            "    public static String getBuildDate() { return \"${getValue()}\"; }\n" +
            "}\n";
    }
}


android.applicationVariants.all { variant ->

    // create a task that generates a java class
    File sourceFolder = file("${buildDir}/customCode/${variant.dirName}")
    def javaGenerationTask = tasks.create(name: "generatedCodeFor${variant.name.capitalize()}", type: GenerateCode) {
        value new Date().format("yyyy-MM-dd'T'HH:mm'Z'", TimeZone.getTimeZone("UTC"))
        outputFile file("${sourceFolder.absolutePath}/com/custom/Foo.java")
    }

    variant.registerJavaGeneratingTask(javaGenerationTask, sourceFolder)
}