diff options
| author | Harsh Shandilya <me@msfjarvis.dev> | 2022-12-02 01:57:02 +0530 |
|---|---|---|
| committer | Harsh Shandilya <me@msfjarvis.dev> | 2022-12-02 01:57:02 +0530 |
| commit | afd0eebdd3287d932c53879fa1ac88f430080ef5 (patch) | |
| tree | 141b9147325b96f4ab3a49927e4a1d997f3c37be /build-logic/src/main/kotlin/app/passwordstore/gradle/ApplicationPlugin.kt | |
| parent | 54bb4676a7c16d959769e522ac018f3e3e822797 (diff) | |
| download | HardenedPass-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.kt | 81 |
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 + } + } +} |
