import foundation.e.privacycentral.buildsrc.DependencyUpdates import foundation.e.privacycentral.buildsrc.ReleaseType // Top-level build file where you can add configuration options common to all sub-projects/modules. buildscript { ext.buildConfig = [ 'compileSdk': 31, 'minSdk' : 26, 'targetSdk' : 31, 'version' : [ 'major': 1, 'minor': 2, 'patch': 0, ], ] ext.buildConfig.version['name'] = "${buildConfig.version.major}.${buildConfig.version.minor}.${buildConfig.version.patch}" ext.buildConfig.version['fullName'] = "${buildConfig.version.name}-${buildConfig.version.build}" ext.buildConfig.version['code'] = buildConfig.version.major * 1000000 + buildConfig.version.minor * 1000 + buildConfig.version.patch // Load properties either from local.properties or system environment (on CI). apply from: rootProject.file('load-properties.gradle') // Load dependencies as extra properties. apply from: rootProject.file('dependencies.gradle') repositories { google() mavenCentral() } dependencies { classpath Libs.androidGradlePlugin classpath Libs.Kotlin.gradlePlugin // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files } } plugins { id 'com.diffplug.spotless' version '5.12.4' id 'com.github.ben-manes.versions' version '0.38.0' id 'org.jetbrains.kotlin.android' version '1.6.10' apply false } allprojects { //Support @JvmDefault, and @OptIn tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile).all { kotlinOptions { freeCompilerArgs = ['-Xjvm-default=enable', '-opt-in=kotlin.RequiresOptIn'] jvmTarget = "1.8" } } repositories { google() mavenCentral() maven { url 'https://api.mapbox.com/downloads/v2/releases/maven' authentication { basic(BasicAuthentication) } credentials { // Do not change the username below. // This should always be `mapbox` (not your username). username = 'mapbox' // Use the secret token you stored in gradle.properties as the password password = MAPBOX_SECRET_KEY ?: "" } } maven { url "https://raw.githubusercontent.com/guardianproject/gpmaven/master" } maven { url 'https://jitpack.io' } def ciJobToken = System.getenv("CI_JOB_TOKEN") def ciApiV4Url = System.getenv("CI_API_V4_URL") if (ciJobToken != null) { maven { url "${ciApiV4Url}/groups/9/-/packages/maven" name "GitLab" credentials(HttpHeaderCredentials) { name = 'Job-Token' value = ciJobToken } authentication { header(HttpHeaderAuthentication) } } } else { mavenLocal() maven { url "https://gitlab.e.foundation/api/v4/groups/9/-/packages/maven" name "GitLab" credentials(HttpHeaderCredentials) { name = 'Private-Token' value = gitLabPrivateToken } authentication { header(HttpHeaderAuthentication) } } } } } subprojects { apply plugin: 'com.diffplug.spotless' spotless { kotlin { target '**/*.kt' targetExclude("$buildDir/**/*.kt") targetExclude('bin/**/*.kt') targetExclude '**/spotless/*.kt' ktlint(Versions.ktlint) licenseHeaderFile rootProject.file('spotless/copyright.kt') } format 'misc', { // define the files to apply `misc` to target '*.gradle', '*.md', '.gitignore' // define the steps to apply to those files trimTrailingWhitespace() endWithNewline() } } tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile).configureEach { kotlinOptions { // Treat all Kotlin warnings as errors allWarningsAsErrors = true freeCompilerArgs += "-Xopt-in=kotlinx.coroutines.ExperimentalCoroutinesApi" // Set JVM target to 1.8 jvmTarget = "1.8" } } } /** * Update dependencyUpdates task to reject versions which are more 'unstable' than our * current version. */ tasks.named("dependencyUpdates").configure { rejectVersionIf { def current = DependencyUpdates.versionToRelease(it.currentVersion) // If we're using a SNAPSHOT, ignore since we must be doing so for a reason. if (current == ReleaseType.SNAPSHOT) return true // Otherwise we reject if the candidate is more 'unstable' than our version def candidate = DependencyUpdates.versionToRelease(it.candidate.version) return candidate.isLessStableThan(current) } } Object propOrDef(String propertyName, Object defaultValue) { def propertyValue = project.properties[propertyName] return propertyValue != null ? propertyValue : defaultValue } apply from: file('gradle/dependencyGraph.gradle')