aboutsummaryrefslogtreecommitdiff
path: root/build.gradle
blob: 058fd11eb5b4751d2a8ff4a524753e109cfa7d82 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:0.5.+'
    }
}

apply plugin: 'android'

repositories {
    mavenCentral()
    maven { url 'http://wordpress-mobile.github.io/WordPress-Android' }
}

dependencies {
    // Provided by maven central
    compile 'com.google.code.gson:gson:2.2.2'
    compile 'org.ccil.cowan.tagsoup:tagsoup:1.2.1'
    compile 'com.android.support:support-v4:18.0.+'

    // These are provided by the WordPress-Android Repository
    compile 'org.wordpress:actionbarsherlock:4.4.0'
    compile 'org.wordpress:menudrawer:3.0.5-SNAPSHOT'
    compile 'org.wordpress:gcm:1.0.0'
    compile 'org.wordpress:volley:wp'
    compile 'com.automattic:wordpresscom-rest:0.0.3'
    compile 'org.wordpress:httpmime:4.1.2'
}

android {

    compileSdkVersion 18
    buildToolsVersion "18.0.1"

    sourceSets {
        main {
            manifest.srcFile 'AndroidManifest.xml'
            java.srcDirs = ['src']
            resources.srcDirs = ['src']
            aidl.srcDirs = ['src']
            renderscript.srcDirs = ['src']
            res.srcDirs = ['res']
            assets.srcDirs = ['assets']
        }

        instrumentTest.setRoot('tests')
    }

}

// Generates the Config.java class using properties defined in gradle.properties
// or by other means provided by Gradle
task wordpressConfig(group: "build", description: "Generate Config class") {
    def dir = "${buildDir}/source/wordpress"
    def file = new File(dir, "org/wordpress/android/Config.java")
    android {
        sourceSets {
            main {
                java {
                    srcDir dir
                }
            }
        }
    }
    outputs.file file
    doLast {
        file.getParentFile().mkdirs()
        def properties = new Properties()
        new File("${rootDir}/local.properties").withInputStream { stream ->
            properties.load(stream)
        }
        def constants = [:]
        properties.propertyNames().each { property ->
            def keys = property.tokenize('.')
            if (keys[0] == 'wp') {
                def name = property.tokenize('.')[1..-1].collect { key -> key.toUpperCase()}.join('_')
                constants[name] = properties.getProperty(property)
            }
        }
        def writer = new FileWriter(file)
        def config = constants.inject("") { consts, name, val ->
            consts + "   public static final String ${name} = \"${val}\";\n"
        }
        writer.write("""/* auto-generated file do not modify */
package org.wordpress.android;

public final class Config {

${config}
}
""")
        writer.close()
    }
}

// Add the wordpressConfig task to every flavor's compile tasks
android.buildTypes.all { buildType ->
    def name = "compile${buildType.name.capitalize()}"
    tasks.whenTaskAdded { task ->
        if (task.name == name) {
            task.dependsOn(wordpressConfig)
            task.mustRunAfter(wordpressConfig)
        }
    }
}