aboutsummaryrefslogtreecommitdiffstats
path: root/build-logic/src/main/kotlin/app/passwordstore/gradle/ApplicationPlugin.kt
diff options
context:
space:
mode:
authorHarsh Shandilya <me@msfjarvis.dev>2022-12-02 01:57:02 +0530
committerHarsh Shandilya <me@msfjarvis.dev>2022-12-02 01:57:02 +0530
commitafd0eebdd3287d932c53879fa1ac88f430080ef5 (patch)
tree141b9147325b96f4ab3a49927e4a1d997f3c37be /build-logic/src/main/kotlin/app/passwordstore/gradle/ApplicationPlugin.kt
parent54bb4676a7c16d959769e522ac018f3e3e822797 (diff)
downloadHardenedPass-afd0eebdd3287d932c53879fa1ac88f430080ef5.tar.gz
HardenedPass-afd0eebdd3287d932c53879fa1ac88f430080ef5.zip
refactor(build-logic): move all code to a single top-level project
Diffstat (limited to 'build-logic/src/main/kotlin/app/passwordstore/gradle/ApplicationPlugin.kt')
-rw-r--r--build-logic/src/main/kotlin/app/passwordstore/gradle/ApplicationPlugin.kt81
1 files changed, 81 insertions, 0 deletions
diff --git a/build-logic/src/main/kotlin/app/passwordstore/gradle/ApplicationPlugin.kt b/build-logic/src/main/kotlin/app/passwordstore/gradle/ApplicationPlugin.kt
new file mode 100644
index 00000000..bf759b3c
--- /dev/null
+++ b/build-logic/src/main/kotlin/app/passwordstore/gradle/ApplicationPlugin.kt
@@ -0,0 +1,81 @@
+@file:Suppress("UnstableApiUsage")
+
+package app.passwordstore.gradle
+
+import app.passwordstore.gradle.flavors.FlavorDimensions
+import app.passwordstore.gradle.flavors.ProductFlavors
+import app.passwordstore.gradle.signing.configureBuildSigning
+import app.passwordstore.gradle.snapshot.SnapshotExtension
+import com.android.build.gradle.AppPlugin
+import com.android.build.gradle.internal.dsl.BaseAppModuleExtension
+import org.gradle.api.Plugin
+import org.gradle.api.Project
+import org.gradle.kotlin.dsl.apply
+import org.gradle.kotlin.dsl.dependencies
+import org.gradle.kotlin.dsl.getByType
+import org.gradle.kotlin.dsl.the
+
+@Suppress("Unused")
+class ApplicationPlugin : Plugin<Project> {
+
+ override fun apply(project: Project) {
+ project.pluginManager.apply(AppPlugin::class)
+ AndroidCommon.configure(project)
+ project.extensions.getByType<BaseAppModuleExtension>().run {
+ val minifySwitch = project.providers.environmentVariable("DISABLE_MINIFY")
+
+ adbOptions.installOptions("--user 0")
+
+ dependenciesInfo {
+ includeInBundle = false
+ includeInApk = false
+ }
+
+ buildFeatures {
+ viewBinding = true
+ buildConfig = true
+ }
+
+ buildTypes {
+ named("release") {
+ isMinifyEnabled = !minifySwitch.isPresent
+ setProguardFiles(
+ listOf(
+ "proguard-android-optimize.txt",
+ "proguard-rules.pro",
+ "proguard-rules-missing-classes.pro",
+ )
+ )
+ buildConfigField("boolean", "ENABLE_DEBUG_FEATURES", "${project.isSnapshot()}")
+ }
+ named("debug") {
+ applicationIdSuffix = ".debug"
+ versionNameSuffix = "-debug"
+ isMinifyEnabled = false
+ buildConfigField("boolean", "ENABLE_DEBUG_FEATURES", "true")
+ }
+ }
+
+ flavorDimensions.add(FlavorDimensions.FREE)
+ productFlavors {
+ register(ProductFlavors.FREE) {}
+ register(ProductFlavors.NON_FREE) {}
+ }
+
+ project.configureBuildSigning()
+ }
+
+ project.dependencies {
+ extensions.add("snapshot", SnapshotExtension::class.java)
+ the<SnapshotExtension>().snapshot = project.isSnapshot()
+ }
+ }
+
+ private fun Project.isSnapshot(): Boolean {
+ with(project.providers) {
+ val workflow = environmentVariable("GITHUB_WORKFLOW")
+ val snapshot = environmentVariable("SNAPSHOT")
+ return workflow.isPresent || snapshot.isPresent
+ }
+ }
+}