summaryrefslogtreecommitdiffstats
path: root/mobile/android/android-components/settings.gradle
blob: 50c58ed003e0bdffab8cdf487b30d8db3ac926a9 (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
/* This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this
 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */

pluginManagement {
    apply from: file('../gradle/mozconfig.gradle')

    repositories {
        gradle.mozconfig.substs.GRADLE_MAVEN_REPOSITORIES.each { repository ->
            maven {
                url repository
                if (gradle.mozconfig.substs.ALLOW_INSECURE_GRADLE_REPOSITORIES) {
                    allowInsecureProtocol = true
                }
            }
        }
    }

    includeBuild("plugins/dependencies")
    includeBuild("plugins/publicsuffixlist")
}

plugins {
    id 'mozac.DependenciesPlugin'
}

ext.topsrcdir = rootProject.projectDir.absolutePath.minus("mobile/android/android-components")

apply from: file('../shared-settings.gradle')

buildCache {
    local {
        directory = new File(rootDir, '.build-cache')
        removeUnusedEntriesAfterDays = 30
    }
}

def runCmd(cmd, workingDir, successMessage) {
    def proc = cmd.execute(null, new File(workingDir))
    proc.consumeProcessOutput(System.out, System.err)
    proc.waitFor()
    if (proc.exitValue() != 0) {
        throw new GradleException("Process '${cmd}' finished with non-zero exit value ${proc.exitValue()}")
    } else {
        logger.lifecycle(successMessage)
    }
}

//////////////////////////////////////////////////////////////////////////
// Local Development overrides
//////////////////////////////////////////////////////////////////////////

Properties localProperties = null;
String settingAppServicesPath = "autoPublish.application-services.dir"
String settingGleanPath = "autoPublish.glean.dir";

if (file('local.properties').canRead()) {
    localProperties = new Properties()
    localProperties.load(file('local.properties').newDataInputStream())
    logger.lifecycle('Local configuration: loaded local.properties')
} else {
    logger.lifecycle('Local configuration: absent local.properties; proceeding as normal.')
}

if (localProperties != null) {
    localProperties.each { prop ->
        gradle.ext.set("localProperties.${prop.key}", prop.value)
    }

    String appServicesLocalPath = localProperties.getProperty(settingAppServicesPath);

    if (appServicesLocalPath != null) {
        logger.lifecycle("Enabling automatic publication of application-services from: $appServicesLocalPath")
        // Windows can't execute .py files directly, so we assume a "manually installed" python,
        // which comes with a "py" launcher and respects the shebang line to specify the version.
        def publishAppServicesCmd = [];
        if (System.properties['os.name'].toLowerCase().contains('windows')) {
            publishAppServicesCmd << "py";
        }
        publishAppServicesCmd << "./automation/publish_to_maven_local_if_modified.py";
        runCmd(publishAppServicesCmd, appServicesLocalPath, "Published application-services for local development.")
    } else {
        logger.lifecycle("Disabled auto-publication of application-services. Enable it by settings '$settingAppServicesPath' in local.properties")
    }

    String gleanLocalPath = localProperties.getProperty(settingGleanPath);

    if (gleanLocalPath != null) {
        logger.lifecycle("Enabling automatic publication of Glean from: $gleanLocalPath")
        // Windows can't execute .py files directly, so we assume a "manually installed" python,
        // which comes with a "py" launcher and respects the shebang line to specify the version.
        def publishGleanCmd = [];
        if (System.properties['os.name'].toLowerCase().contains('windows')) {
            publishGleanCmd << "py";
        }
        publishGleanCmd << "./build-scripts/publish_to_maven_local_if_modified.py";
        runCmd(publishGleanCmd, gleanLocalPath, "Published Glean for local development.")
    } else {
        logger.lifecycle("Disabled auto-publication of Glean. Enable it by settings '$settingGleanPath' in local.properties")
    }
}