[components] For https://github.com/mozilla-mobile/android-components/issues/10404...
[gecko.git] / mobile / android / android-components / components / support / base / build.gradle
blobb2cec85d288fdd53041676bc1146b19c74a57e6d
1 /* This Source Code Form is subject to the terms of the Mozilla Public
2  * License, v. 2.0. If a copy of the MPL was not distributed with this
3  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
5 apply plugin: 'com.android.library'
6 apply plugin: 'kotlin-android'
8 def generatedSrcDir = new File(buildDir, "generated/components/src/main/java")
10 // This gitHash functionality is duplicated in publish.gradle.
11 def getGitHash = { ->
12     def stdout = new ByteArrayOutputStream()
13     exec {
14         commandLine 'git', 'rev-parse', '--short', 'HEAD'
15         standardOutput = stdout
16     }
17     return stdout.toString().trim()
20 android {
21     compileSdkVersion config.compileSdkVersion
23     defaultConfig {
24         minSdkVersion config.minSdkVersion
25         targetSdkVersion config.targetSdkVersion
27         testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
29         buildConfigField("String", "LIBRARY_VERSION", "\"" + config.componentsVersion + "\"")
30         buildConfigField("String", "APPLICATION_SERVICES_VERSION", "\"" + Versions.mozilla_appservices + "\"")
31         buildConfigField("String", "GLEAN_SDK_VERSION", "\"" + Versions.mozilla_glean + "\"")
32         buildConfigField("String", "GIT_HASH", "\"dev build\"")
33     }
35     buildTypes {
36         release {
37             minifyEnabled false
38             proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
40             buildConfigField("String", "GIT_HASH", "\"" + getGitHash() + "\"")
41         }
42     }
44     sourceSets {
45         main {
46             java {
47                 srcDirs += generatedSrcDir
48             }
49         }
50     }
52     buildFeatures {
53         viewBinding true
54     }
57 dependencies {
58     implementation Dependencies.kotlin_stdlib
59     implementation Dependencies.kotlin_coroutines
61     api project(":concept-base")
62     // We expose the app-compat as API so that consumers get access to the Lifecycle classes automatically
63     api Dependencies.androidx_appcompat
65     testImplementation project(':support-test')
67     testImplementation Dependencies.testing_coroutines
68     testImplementation Dependencies.androidx_test_core
69     testImplementation Dependencies.androidx_test_junit
70     testImplementation Dependencies.testing_robolectric
71     testImplementation Dependencies.testing_mockito
75 preBuild.finalizedBy("generateComponentEnum")
78 /**
79  * Generates a "Components" enum listing all published components.
80  */
81 tasks.register("generateComponentEnum") {
82     doLast {
83         generatedSrcDir.mkdirs()
85         def file = new File(generatedSrcDir, "Component.kt")
86         file.delete()
87         file.createNewFile()
89         file << "package mozilla.components.support.base" << "\n"
90         file << "\n"
91         file << "// Automatically generated file. DO NOT MODIFY" << "\n"
92         file << "\n"
93         file << "enum class Component {" << "\n"
95         file << buildConfig.projects.findAll { project ->
96             project.value.publish
97         }.collect { project ->
98             "    " + project.key.replace("-", "_").toUpperCase(Locale.US)
99         }.join(", \n")
101         file << "\n"
102         file << "}\n"
103         file << "\n"
104     }
107 apply from: '../../../publish.gradle'
108 ext.configurePublish(config.componentsGroupId, archivesBaseName, project.ext.description)