Subversion Repositories DevTools

Rev

Rev 5307 | Go to most recent revision | Details | 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 {
45
        afterEvaluate { project ->
46
        //logger.info "-------- allprojects::afterEvaluate"
47
        logger.info 'Project : ' + project.name
48
        JatsGlobals.setProperty('Project_' + project.name, 1);
49
 
50
        //---------------------------------------------------------------------
51
        //  Remove network based repositories from the projects repositories
52
        //
53
        project.repositories
54
        {
55
            all 
56
            { 
57
                ArtifactRepository repo ->
58
                    def repoUrl = 'Repo Has no URL'
59
                    if (repo.hasProperty('url'))
60
                    {
61
                        repoUrl = repo.url.toString()
62
                    }
63
                    logger.info 'Repo:' + repo.name + "["+ repoUrl+"]"
64
 
65
                    //  Allow
66
                    //      flatDir - these are used for JATS dependencies
67
                    //      Repos that have a URL that starts with file:/ - these a local repos
68
                    if (!(repo.name == 'flatDir' || repoUrl.startsWith('file:/')))
69
                    {
70
                        logger.warn "WARNING: Repository: ${repo.name}. Url: ${repoUrl} removed. Local repositories allowed"
71
                        remove repo
72
                    }
73
            }
74
        }
75
 
76
 
77
        //---------------------------------------------------------------------
78
        //  Ensure that the JATS generated Version information is being used by 
79
        //  the android projects to version the generated XML
80
        //
81
        logger.info "Global Version information"
82
        logger.info "  project.GBE_VERSION_NAME:" + project.GBE_VERSION_NAME
83
        logger.info "  project.GBE_VERSION_CODE:" + project.GBE_VERSION_CODE
84
 
85
        if (project.hasProperty('android'))
86
        {
87
            logger.info "defaultConfig Properties"
88
            logger.info "project.android.defaultConfig.versionName:" + project.android.defaultConfig.versionName
89
            logger.info "project.android.defaultConfig.versionCode:" + project.android.defaultConfig.versionCode
90
 
91
            if (project.GBE_VERSION_NAME != project.android.defaultConfig.versionName)
92
            {
93
                logger.error ("ERROR: Android defaultConfig. VersionName is not controlled by JATS")
94
                logger.error (" Project Version Name:" + project.GBE_VERSION_NAME)
95
                logger.error (" Default Version Name:" + project.android.defaultConfig.versionName)
96
                throw new GradleException('JATS Version Check failed')
97
            }
98
 
99
            if (Integer.parseInt(project.GBE_VERSION_CODE) != project.android.defaultConfig.versionCode)
100
            {
101
                logger.error ("ERROR: Android defaultConfig. VersionCode is not controlled by JATS")
102
                logger.error (" Project Version Code:" + project.GBE_VERSION_CODE)
103
                logger.error (" Default Version Code:" + project.android.defaultConfig.versionCode)
104
                throw new GradleException('JATS Version Check failed')
105
            }
106
 
107
            logger.warn (':' + project.name + ':JATS version injecting checked OK')
108
            JatsGlobals.noAndroidProjectSeen += 1
109
        }
110
 
111
        //
112
        //  Insert a dummy task so that we can perform testing from within JATS
113
        //  Tasks have stuff to do
114
        //      doFirst adds stuff to the beginning of the action chain
115
        //      doLast adds stuff to the end of the action chain
116
        task('JatsInfo') 
117
        {
118
            description 'A task used by jats for sanity testing'
119
 
120
            doFirst {
121
                logger.info "Global Version information"
122
                logger.info "  project.GBE_VERSION_NAME:" + getProject().GBE_VERSION_NAME
123
                logger.info "  project.GBE_VERSION_CODE:" + getProject().GBE_VERSION_CODE
124
            }
125
        }
126
    }
127
}
128
 
129