/* * Copyright (C) 2023-2024 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 . */ // Top-level build file where you can add configuration options common to all sub-projects/modules. buildscript { ext.buildConfig = [ 'compileSdk': 34, 'minSdk' : 30, 'targetSdk' : 34, 'version' : [ 'major': 2, 'minor': 5, '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.detekt 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 alias libs.plugins.android.library 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 = "17" } } } spotless { kotlin { target("**/*.kt") ktlint("1.0.1") } format 'misc', { // define the files to apply `misc` to target '*.gradle', '*.md', '.gitignore' // define the steps to apply to those files trimTrailingWhitespace() endWithNewline() } } subprojects { tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile).configureEach { kotlinOptions { // Treat all Kotlin warnings as errors allWarningsAsErrors = true freeCompilerArgs += "-opt-in=kotlinx.coroutines.ExperimentalCoroutinesApi" jvmTarget = "17" } } detekt { toolVersion = libs.versions.detekt source = files( "src/main/java" ) config.setFrom("detekt.yml") baseline = file("detekt-baseline.xml") parallel = false buildUponDefaultConfig = true allRules = false disableDefaultRuleSets = false debug = false ignoreFailures = false basePath = projectDir } } Object propOrDef(String propertyName, Object defaultValue) { def propertyValue = project.properties[propertyName] return propertyValue != null ? propertyValue : defaultValue }