/*
 * Hibernate, Relational Persistence for Idiomatic Java
 *
 * License: GNU Lesser General Public License (LGPL), version 2.1 or later
 * See the lgpl.txt file in the root directory or http://www.gnu.org/licenses/lgpl-2.1.html
 */

// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Applies details for `https://ge.hibernate.org`
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

ext {
    isCiEnvironment = isJenkins() || isGitHubActions() || isGenericCi()
    populateRemoteBuildCache = getSetting( "POPULATE_REMOTE" ).isPresent()
}

private static boolean isJenkins() {
    return getSetting( "JENKINS_URL" ).isPresent()
}

private static boolean isGitHubActions() {
    return getSetting( "GITHUB_ACTIONS" ).isPresent()
}

private static boolean isGenericCi() {
    return System.getenv("CI") != null || System.getProperty("CI") != null
}

static java.util.Optional<String> getSetting(String name) {
    def envVar = System.getenv(name)
    if ( envVar != null ) {
        return java.util.Optional.of(envVar);
    }

    def sysProp = System.getProperty(name)
    return java.util.Optional.ofNullable(sysProp);
}

gradleEnterprise {
    server = 'https://ge.hibernate.org'

    buildScan {
        captureTaskInputFiles = true
        publishAlways()
        publishIfAuthenticated()

        uploadInBackground = !settings.ext.isCiEnvironment

        if ( settings.ext.isCiEnvironment ) {
            tag "JOB ${System.getenv('JOB_NAME')}"
        }
        tag "JDK ${JavaVersion.current().toString()}"
        value 'database', rootProject.hasProperty( 'db' ) ? rootProject.properties.db : 'h2'
    }
}