/* * Copyright (C) 2023 MURENA SAS * Copyright (C) 2022 E FOUNDATION * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ import foundation.e.advancedprivacy.buildsrc.DependencyUpdates import foundation.e.advancedprivacy.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': 13, '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') repositories { google() mavenCentral() } } plugins { alias libs.plugins.spotless alias libs.plugins.benmanes.versions alias libs.plugins.kotlin.android apply false alias libs.plugins.android.application apply false alias libs.plugins.kotlin.kapt apply false alias libs.plugins.androidx.navigation.safeargs apply false } allprojects { //Support @JvmDefault, and @OptIn tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile).all { kotlinOptions { freeCompilerArgs = ['-Xjvm-default=all', '-opt-in=kotlin.RequiresOptIn'] jvmTarget = "1.8" } } } subprojects { apply plugin: 'com.diffplug.spotless' spotless { kotlin { target '**/*.kt' targetExclude("$buildDir/**/*.kt") targetExclude('bin/**/*.kt') targetExclude '**/spotless/*.kt' ktlint("0.40.0") } 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 += "-opt-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')