Subversion Repositories DevTools

Rev

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