Anforderungen  |   Konzepte  |   Entwurf  |   Entwicklung  |   Qualitätssicherung  |   Lebenszyklus  |   Steuerung
 
 
 
 


Quelle  autopublish-settings.gradle   Sprache: unbekannt

 
/* 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/. */

// This settings file configures an Android project for substituting a
// local Application Services and/or Glean.
//
// For convenience, this file reads the `autoPublish.*` properties from
// `$topsrcdir/local.properties`, so that you only need to set them once
// for all Android projects.
//
// You can also set or override these properties on a per-project basis,
// by setting them in `$topsrcdir/mobile/android/{project}/local.properties`,
// if you want to only substitute App Services or Glean for a specific project,
// or to substitute different versions for different projects.
//
// This settings file configures the build to automatically publish the
// contents of your Application Services and Glean checkouts to the
// Maven local repository. Any dependencies are then substituted to use
// the locally published versions.

def rootLocalProperties = new File(gradle.mozconfig.topsrcdir, "local.properties").with { localPropertiesFile ->
    def localProperties = new Properties()
    if (localPropertiesFile.canRead()) {
        localPropertiesFile.withInputStream { localProperties.load(it) }
    }
    localProperties
}

[
    "autoPublish.application-services.dir",
    "autoPublish.glean.dir",
].each { key ->
    def relativeOrAbsolutePath = rootLocalProperties."$key"
    if (relativeOrAbsolutePath != null) {
        def autoPublishDir = new File(gradle.mozconfig.topsrcdir).toPath().resolve(relativeOrAbsolutePath)
        gradle.ext."localProperties.$key" = autoPublishDir.toString()
    }
}

gradle.settingsEvaluated {
    if (gradle.hasProperty("localProperties.autoPublish.application-services.dir")) {
        def appServicesLocalPath = gradle."localProperties.autoPublish.application-services.dir"
        logger.lifecycle("settings.gradle> 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.", false)
    } else {
        logger.lifecycle("settings.gradle> Disabled auto-publication of application-services. Enable it by settings 'autoPublish.application-services.dir' in local.properties")
    }

    if (gradle.hasProperty("localProperties.autoPublish.glean.dir")) {
        def gleanLocalPath = gradle."localProperties.autoPublish.glean.dir"
        logger.lifecycle("settings.gradle> Enabling automatic publication of Glean from: $gleanLocalPath")
        // As above, hacks to execute .py files on Windows.
        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.", false)
    } else {
        logger.lifecycle("settings.gradle> Disabled auto-publication of Glean. Enable it by settings 'autoPublish.glean.dir' in local.properties")
    }
}

gradle.projectsLoaded { ->
    gradle.rootProject.allprojects {
        // Allow local appservices substitution in each project.
        if (gradle.hasProperty("localProperties.autoPublish.application-services.dir")) {
            def appServicesSrcDir = gradle."localProperties.autoPublish.application-services.dir"
            apply from: rootProject.file("${appServicesSrcDir}/build-scripts/substitute-local-appservices.gradle")
        }

        // Allow local Glean substitution in each project.
        if (gradle.hasProperty('localProperties.autoPublish.glean.dir')) {
            def gleanSrcDir = gradle."localProperties.autoPublish.glean.dir"
            apply from: rootProject.file("${gleanSrcDir}/build-scripts/substitute-local-glean.gradle")
        }
    }
}

def runCmd(cmd, workingDir, successMessage, captureStdout = true) {
    def proc = cmd.execute(null, new File(workingDir))
    def standardOutput = captureStdout ? new ByteArrayOutputStream() : System.out
    proc.consumeProcessOutput(standardOutput, System.err)
    proc.waitFor()

    if (proc.exitValue() != 0) {
        throw new GradleException("Process '${cmd}' finished with non-zero exit value ${proc.exitValue()}");
    } else {
        logger.lifecycle("settings.gradle> ${successMessage}")
    }
    return captureStdout ? standardOutput : null
}

[ Dauer der Verarbeitung: 0.28 Sekunden  (vorverarbeitet)  ]

                                                                                                                                                                                                                                                                                                                                                                                                     


Neuigkeiten

     Aktuelles
     Motto des Tages

Software

     Produkte
     Quellcodebibliothek

Aktivitäten

     Artikel über Sicherheit
     Anleitung zur Aktivierung von SSL

Muße

     Gedichte
     Musik
     Bilder

Jenseits des Üblichen ....

Besucherstatistik

Besucherstatistik

Monitoring

Montastic status badge