Subversion Repositories DevTools

Rev

Rev 5412 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
4937 dpurdie 1
//
2
//  Create a global expando class to hold global variables
3
def JatsGlobals = new Expando( noAndroidProjectSeen:0)
4
 
5
//
6
//  Create a hook before any of the projects are evaluated
7
gradle.projectsLoaded { g ->
8
    println 'Gradle Version          : ' + gradle.gradleVersion;
9
    println 'Gradle Home Dir         : ' + gradle.gradleHomeDir;
10
    println 'Gradle UserHome Dir     : ' + gradle.gradleUserHomeDir;
11
    println 'GBE_VERSION_NAME        : ' + gradle.rootProject.GBE_VERSION_NAME
12
    println 'GBE_VERSION_CODE        : ' + gradle.rootProject.GBE_VERSION_CODE
13
 
14
//  gradle.rootProject.properties.sort{it.key}.each { k,v->
15
//      println "   Root Property: $k = $v"
16
//  }
17
 
18
//  System.properties.sort{it.key}.each { k,v->
19
//      println "   System Property: $k = $v"
20
//  }
21
//
22
//  gradle.properties.sort{it.key}.each { k,v->
23
//      println "   Gradle Property: $k = $v"
24
//  }
25
}
26
 
27
//
28
//  Create a hook after all the projects have been evaluted
29
gradle.projectsEvaluated { g ->
30
//  JatsGlobals.properties.sort{it.key}.each { k,v->
31
//      println "JatsGlobals Property: $k = $v"
32
//  }
33
 
34
    //  Ensure that we have seen an android project with injected version information
35
    //
36
    if (JatsGlobals.noAndroidProjectSeen < 1)
37
    {
38
        logger.error ("ERROR: No android projects found")
39
        throw new GradleException('JATS Version Check failed')
40
    }
41
    logger.warn ('JATS version injection checked OK')
42
}
43
 
44
allprojects {
5412 dpurdie 45
 
4937 dpurdie 46
        afterEvaluate { project ->
47
        //logger.info "-------- allprojects::afterEvaluate"
48
        logger.info 'Project : ' + project.name
49
        JatsGlobals.setProperty('Project_' + project.name, 1);
50
 
51
        //---------------------------------------------------------------------
5412 dpurdie 52
        // Configure RoboElectric for offline operation
53
        // Force here for all builds done under JATS
54
        project.tasks.withType(Test) {
55
            systemProperties.put('robolectric.offline', 'true')
56
        }
57
 
58
        //---------------------------------------------------------------------
4937 dpurdie 59
        //  Remove network based repositories from the projects repositories
60
        //
61
        project.repositories
62
        {
63
            all 
64
            { 
65
                ArtifactRepository repo ->
5412 dpurdie 66
                    def repoUrl = 'Repo has no URL'
67
                    def repoDir = ''
4937 dpurdie 68
                    if (repo.hasProperty('url'))
69
                    {
70
                        repoUrl = repo.url.toString()
5412 dpurdie 71
                        if (repoUrl.startsWith('file:/'))
72
                        {
73
                            repoDir = repoUrl
74
                        }
4937 dpurdie 75
                    }
5412 dpurdie 76
                    if (repo.name.startsWith('flatDir') && repo.hasProperty('dirs'))
77
                    {
78
                        repoDir = repo.dirs.toString()
79
                        repoUrl = repoDir
80
                    }
4937 dpurdie 81
 
5412 dpurdie 82
                    logger.info 'Repo:' + repo.name + "["+ repoUrl +"]" 
83
 
4937 dpurdie 84
                    //  Allow
5412 dpurdie 85
                    //      flatDir* - these are used for JATS dependencies
4937 dpurdie 86
                    //      Repos that have a URL that starts with file:/ - these a local repos
5412 dpurdie 87
                    if (repoDir.length() == 0)
4937 dpurdie 88
                    {
5307 dpurdie 89
                        logger.warn "WARNING: Repository: ${repo.name}. Url: ${repoUrl} removed. Only local repositories allowed"
4937 dpurdie 90
                        remove repo
91
                    }
92
            }
93
        }
94
 
95
 
96
        //---------------------------------------------------------------------
97
        //  Ensure that the JATS generated Version information is being used by 
98
        //  the android projects to version the generated XML
99
        //
100
        logger.info "Global Version information"
101
        logger.info "  project.GBE_VERSION_NAME:" + project.GBE_VERSION_NAME
102
        logger.info "  project.GBE_VERSION_CODE:" + project.GBE_VERSION_CODE
103
 
104
        if (project.hasProperty('android'))
105
        {
106
            logger.info "defaultConfig Properties"
107
            logger.info "project.android.defaultConfig.versionName:" + project.android.defaultConfig.versionName
108
            logger.info "project.android.defaultConfig.versionCode:" + project.android.defaultConfig.versionCode
109
 
110
            if (project.GBE_VERSION_NAME != project.android.defaultConfig.versionName)
111
            {
112
                logger.error ("ERROR: Android defaultConfig. VersionName is not controlled by JATS")
113
                logger.error (" Project Version Name:" + project.GBE_VERSION_NAME)
114
                logger.error (" Default Version Name:" + project.android.defaultConfig.versionName)
115
                throw new GradleException('JATS Version Check failed')
116
            }
117
 
118
            if (Integer.parseInt(project.GBE_VERSION_CODE) != project.android.defaultConfig.versionCode)
119
            {
120
                logger.error ("ERROR: Android defaultConfig. VersionCode is not controlled by JATS")
121
                logger.error (" Project Version Code:" + project.GBE_VERSION_CODE)
122
                logger.error (" Default Version Code:" + project.android.defaultConfig.versionCode)
123
                throw new GradleException('JATS Version Check failed')
124
            }
125
 
126
            logger.warn (':' + project.name + ':JATS version injecting checked OK')
127
            JatsGlobals.noAndroidProjectSeen += 1
128
        }
129
 
130
        //
131
        //  Insert a dummy task so that we can perform testing from within JATS
132
        //  Tasks have stuff to do
133
        //      doFirst adds stuff to the beginning of the action chain
134
        //      doLast adds stuff to the end of the action chain
135
        task('JatsInfo') 
136
        {
137
            description 'A task used by jats for sanity testing'
138
 
139
            doFirst {
140
                logger.info "Global Version information"
141
                logger.info "  project.GBE_VERSION_NAME:" + getProject().GBE_VERSION_NAME
142
                logger.info "  project.GBE_VERSION_CODE:" + getProject().GBE_VERSION_CODE
143
            }
144
        }
145
    }
146
}
147
 
148