aboutsummaryrefslogtreecommitdiff
path: root/buildSrc/src/main/java/BaseProjectConfig.kt
diff options
context:
space:
mode:
Diffstat (limited to 'buildSrc/src/main/java/BaseProjectConfig.kt')
-rw-r--r--buildSrc/src/main/java/BaseProjectConfig.kt83
1 files changed, 83 insertions, 0 deletions
diff --git a/buildSrc/src/main/java/BaseProjectConfig.kt b/buildSrc/src/main/java/BaseProjectConfig.kt
new file mode 100644
index 00000000..3b2a3f3b
--- /dev/null
+++ b/buildSrc/src/main/java/BaseProjectConfig.kt
@@ -0,0 +1,83 @@
+/*
+ * Copyright © 2014-2020 The Android Password Store Authors. All Rights Reserved.
+ * SPDX-License-Identifier: GPL-3.0-only
+ */
+
+import com.android.build.gradle.TestedExtension
+import org.gradle.api.JavaVersion
+import org.gradle.api.Project
+import org.gradle.api.tasks.Delete
+import org.gradle.api.tasks.testing.Test
+import org.gradle.api.tasks.testing.logging.TestLogEvent
+import org.gradle.api.tasks.wrapper.Wrapper
+import org.gradle.kotlin.dsl.repositories
+import org.gradle.kotlin.dsl.withType
+import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
+
+/**
+ * Configure root project.
+ * Note that classpath dependencies still need to be defined in the `buildscript` block in the top-level build.gradle.kts file.
+ */
+internal fun Project.configureForRootProject() {
+ // register task for cleaning the build directory in the root project
+ tasks.register("clean", Delete::class.java) {
+ delete(rootProject.buildDir)
+ }
+ tasks.withType<Wrapper> {
+ gradleVersion = "6.7"
+ distributionType = Wrapper.DistributionType.ALL
+ distributionSha256Sum = "0080de8491f0918e4f529a6db6820fa0b9e818ee2386117f4394f95feb1d5583"
+ }
+ configureBinaryCompatibilityValidator()
+}
+
+/**
+ * Configure all projects including the root project
+ */
+internal fun Project.configureForAllProjects() {
+ repositories {
+ google()
+ jcenter()
+ maven { setUrl("https://jitpack.io") }
+ }
+ tasks.withType<KotlinCompile> {
+ kotlinOptions {
+ jvmTarget = JavaVersion.VERSION_1_8.toString()
+ freeCompilerArgs = freeCompilerArgs + additionalCompilerArgs
+ languageVersion = "1.4"
+ }
+ }
+ tasks.withType<Test> {
+ maxParallelForks = Runtime.getRuntime().availableProcessors() * 2
+ testLogging {
+ events(TestLogEvent.PASSED, TestLogEvent.SKIPPED, TestLogEvent.FAILED)
+ }
+ }
+}
+
+/**
+ * Apply baseline configurations for all Android projects (Application and Library).
+ */
+@Suppress("UnstableApiUsage")
+internal fun TestedExtension.configureCommonAndroidOptions() {
+ compileSdkVersion(29)
+
+ defaultConfig {
+ minSdkVersion(23)
+ targetSdkVersion(29)
+ }
+
+ packagingOptions {
+ exclude("**/*.version")
+ exclude("**/*.txt")
+ exclude("**/*.kotlin_module")
+ exclude("**/plugin.properties")
+ }
+
+ compileOptions {
+ sourceCompatibility = JavaVersion.VERSION_1_8
+ targetCompatibility = JavaVersion.VERSION_1_8
+ }
+
+ testOptions.animationsDisabled = true
+}