aboutsummaryrefslogtreecommitdiff
path: root/build-logic/android-plugins/src/main
diff options
context:
space:
mode:
authorHarsh Shandilya <me@msfjarvis.dev>2022-06-04 15:24:46 +0530
committerHarsh Shandilya <me@msfjarvis.dev>2022-06-05 03:58:15 +0530
commit504c8b466c44b4a8591976ed5d8662f7c83f67fc (patch)
tree3ff0a7d13736da9a9103617a196e4562287705ea /build-logic/android-plugins/src/main
parentfee75104962548404ed2ffc4f6ef9c397b86683f (diff)
android-plugins: convert to full plugins
Diffstat (limited to 'build-logic/android-plugins/src/main')
-rw-r--r--build-logic/android-plugins/src/main/kotlin/com.github.android-password-store.android-application.gradle.kts72
-rw-r--r--build-logic/android-plugins/src/main/kotlin/com.github.android-password-store.android-common.gradle.kts43
-rw-r--r--build-logic/android-plugins/src/main/kotlin/com.github.android-password-store.android-library.gradle.kts9
-rw-r--r--build-logic/android-plugins/src/main/kotlin/com.github.android-password-store.published-android-library.gradle.kts34
-rw-r--r--build-logic/android-plugins/src/main/kotlin/com.github.android-password-store.rename-artifacts.gradle.kts22
-rw-r--r--build-logic/android-plugins/src/main/kotlin/com.github.android-password-store.sentry.gradle.kts37
-rw-r--r--build-logic/android-plugins/src/main/kotlin/dev/msfjarvis/aps/gradle/AndroidCommon.kt47
-rw-r--r--build-logic/android-plugins/src/main/kotlin/dev/msfjarvis/aps/gradle/ApplicationPlugin.kt81
-rw-r--r--build-logic/android-plugins/src/main/kotlin/dev/msfjarvis/aps/gradle/LibraryPlugin.kt15
-rw-r--r--build-logic/android-plugins/src/main/kotlin/dev/msfjarvis/aps/gradle/PublishedAndroidLibraryPlugin.kt40
-rw-r--r--build-logic/android-plugins/src/main/kotlin/dev/msfjarvis/aps/gradle/RenameArtifactsPlugin.kt37
-rw-r--r--build-logic/android-plugins/src/main/kotlin/dev/msfjarvis/aps/gradle/SentryPlugin.kt48
-rw-r--r--build-logic/android-plugins/src/main/kotlin/dev/msfjarvis/aps/gradle/artifacts/CollectApksTask.kt (renamed from build-logic/android-plugins/src/main/kotlin/artifacts/CollectApksTask.kt)2
-rw-r--r--build-logic/android-plugins/src/main/kotlin/dev/msfjarvis/aps/gradle/artifacts/CollectBundleTask.kt (renamed from build-logic/android-plugins/src/main/kotlin/artifacts/CollectBundleTask.kt)2
-rw-r--r--build-logic/android-plugins/src/main/kotlin/dev/msfjarvis/aps/gradle/flavors/ProductFlavors.kt (renamed from build-logic/android-plugins/src/main/kotlin/flavors/ProductFlavors.kt)2
-rw-r--r--build-logic/android-plugins/src/main/kotlin/dev/msfjarvis/aps/gradle/flavors/SlimTests.kt (renamed from build-logic/android-plugins/src/main/kotlin/flavors/SlimTests.kt)2
-rw-r--r--build-logic/android-plugins/src/main/kotlin/dev/msfjarvis/aps/gradle/signing/AppSigning.kt (renamed from build-logic/android-plugins/src/main/kotlin/signing/AppSigning.kt)2
-rw-r--r--build-logic/android-plugins/src/main/kotlin/dev/msfjarvis/aps/gradle/snapshot/SnapshotExtension.kt (renamed from build-logic/android-plugins/src/main/kotlin/snapshot/SnapshotExtension.kt)2
-rw-r--r--build-logic/android-plugins/src/main/kotlin/dev/msfjarvis/aps/gradle/versioning/Constants.kt (renamed from build-logic/android-plugins/src/main/kotlin/versioning/Constants.kt)2
-rw-r--r--build-logic/android-plugins/src/main/kotlin/dev/msfjarvis/aps/gradle/versioning/VersioningPlugin.kt (renamed from build-logic/android-plugins/src/main/kotlin/versioning/VersioningPlugin.kt)2
-rw-r--r--build-logic/android-plugins/src/main/kotlin/dev/msfjarvis/aps/gradle/versioning/VersioningTask.kt (renamed from build-logic/android-plugins/src/main/kotlin/versioning/VersioningTask.kt)2
21 files changed, 277 insertions, 226 deletions
diff --git a/build-logic/android-plugins/src/main/kotlin/com.github.android-password-store.android-application.gradle.kts b/build-logic/android-plugins/src/main/kotlin/com.github.android-password-store.android-application.gradle.kts
deleted file mode 100644
index 509cc96d..00000000
--- a/build-logic/android-plugins/src/main/kotlin/com.github.android-password-store.android-application.gradle.kts
+++ /dev/null
@@ -1,72 +0,0 @@
-/*
- * Copyright © 2014-2021 The Android Password Store Authors. All Rights Reserved.
- * SPDX-License-Identifier: GPL-3.0-only
- */
-@file:Suppress("UnstableApiUsage")
-
-import flavors.FlavorDimensions
-import flavors.ProductFlavors
-import signing.configureBuildSigning
-import snapshot.SnapshotExtension
-
-plugins {
- id("com.android.application")
- id("com.github.android-password-store.android-common")
-}
-
-fun Project.isSnapshot(): Boolean {
- with(project.providers) {
- val workflow = environmentVariable("GITHUB_WORKFLOW")
- val snapshot = environmentVariable("SNAPSHOT")
- return workflow.isPresent || snapshot.isPresent
- }
-}
-
-android {
- 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()
-}
-
-dependencies {
- extensions.add("snapshot", SnapshotExtension::class.java)
- the<SnapshotExtension>().snapshot = isSnapshot()
-}
diff --git a/build-logic/android-plugins/src/main/kotlin/com.github.android-password-store.android-common.gradle.kts b/build-logic/android-plugins/src/main/kotlin/com.github.android-password-store.android-common.gradle.kts
deleted file mode 100644
index c7bbf0fd..00000000
--- a/build-logic/android-plugins/src/main/kotlin/com.github.android-password-store.android-common.gradle.kts
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- * Copyright © 2014-2021 The Android Password Store Authors. All Rights Reserved.
- * SPDX-License-Identifier: GPL-3.0-only
- */
-@file:Suppress("UnstableApiUsage")
-
-import com.android.build.gradle.TestedExtension
-import flavors.configureSlimTests
-
-extensions.configure<TestedExtension> {
- setCompileSdkVersion(31)
- defaultConfig {
- minSdk = 23
- targetSdk = 31
- }
-
- sourceSets {
- named("main") { java.srcDirs("src/main/kotlin") }
- named("test") { java.srcDirs("src/test/kotlin") }
- named("androidTest") { java.srcDirs("src/androidTest/kotlin") }
- }
-
- packagingOptions {
- resources.excludes.add("**/*.version")
- resources.excludes.add("**/*.txt")
- resources.excludes.add("**/*.kotlin_module")
- resources.excludes.add("**/plugin.properties")
- resources.excludes.add("**/META-INF/AL2.0")
- resources.excludes.add("**/META-INF/LGPL2.1")
- }
-
- compileOptions {
- sourceCompatibility = JavaVersion.VERSION_11
- targetCompatibility = JavaVersion.VERSION_11
- }
-
- testOptions {
- animationsDisabled = true
- unitTests.isReturnDefaultValues = true
- }
-
- configureSlimTests()
-}
diff --git a/build-logic/android-plugins/src/main/kotlin/com.github.android-password-store.android-library.gradle.kts b/build-logic/android-plugins/src/main/kotlin/com.github.android-password-store.android-library.gradle.kts
deleted file mode 100644
index cb6d8a40..00000000
--- a/build-logic/android-plugins/src/main/kotlin/com.github.android-password-store.android-library.gradle.kts
+++ /dev/null
@@ -1,9 +0,0 @@
-/*
- * Copyright © 2014-2021 The Android Password Store Authors. All Rights Reserved.
- * SPDX-License-Identifier: GPL-3.0-only
- */
-
-plugins {
- id("com.android.library")
- id("com.github.android-password-store.android-common")
-}
diff --git a/build-logic/android-plugins/src/main/kotlin/com.github.android-password-store.published-android-library.gradle.kts b/build-logic/android-plugins/src/main/kotlin/com.github.android-password-store.published-android-library.gradle.kts
deleted file mode 100644
index 5f2c51f3..00000000
--- a/build-logic/android-plugins/src/main/kotlin/com.github.android-password-store.published-android-library.gradle.kts
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- * Copyright © 2014-2021 The Android Password Store Authors. All Rights Reserved.
- * SPDX-License-Identifier: GPL-3.0-only
- */
-
-import com.vanniktech.maven.publish.AndroidSingleVariantLibrary
-import com.vanniktech.maven.publish.SonatypeHost
-import org.gradle.kotlin.dsl.provideDelegate
-
-plugins {
- id("com.github.android-password-store.android-library")
- id("com.vanniktech.maven.publish.base")
- id("signing")
-}
-
-group = requireNotNull(project.findProperty("GROUP"))
-
-version = requireNotNull(project.findProperty("VERSION_NAME"))
-
-@Suppress("UnstableApiUsage")
-mavenPublishing {
- publishToMavenCentral(SonatypeHost.DEFAULT)
- signAllPublications()
- configure(AndroidSingleVariantLibrary())
- pomFromGradleProperties()
-}
-
-afterEvaluate {
- signing {
- val signingKey: String? by project
- val signingPassword: String? by project
- useInMemoryPgpKeys(signingKey, signingPassword)
- }
-}
diff --git a/build-logic/android-plugins/src/main/kotlin/com.github.android-password-store.rename-artifacts.gradle.kts b/build-logic/android-plugins/src/main/kotlin/com.github.android-password-store.rename-artifacts.gradle.kts
deleted file mode 100644
index 9c74c360..00000000
--- a/build-logic/android-plugins/src/main/kotlin/com.github.android-password-store.rename-artifacts.gradle.kts
+++ /dev/null
@@ -1,22 +0,0 @@
-import artifacts.CollectApksTask
-import artifacts.CollectBundleTask
-import com.android.build.api.artifact.SingleArtifact
-
-plugins { id("com.android.application") }
-
-androidComponents {
- onVariants { variant ->
- project.tasks.register<CollectApksTask>("collect${variant.name.capitalize()}Apks") {
- variantName.set(variant.name)
- apkFolder.set(variant.artifacts.get(SingleArtifact.APK))
- builtArtifactsLoader.set(variant.artifacts.getBuiltArtifactsLoader())
- outputDirectory.set(project.layout.projectDirectory.dir("outputs"))
- }
- project.tasks.register<CollectBundleTask>("collect${variant.name.capitalize()}Bundle") {
- variantName.set(variant.name)
- versionName.set(android.defaultConfig.versionName)
- bundleFile.set(variant.artifacts.get(SingleArtifact.BUNDLE))
- outputDirectory.set(project.layout.projectDirectory.dir("outputs"))
- }
- }
-}
diff --git a/build-logic/android-plugins/src/main/kotlin/com.github.android-password-store.sentry.gradle.kts b/build-logic/android-plugins/src/main/kotlin/com.github.android-password-store.sentry.gradle.kts
deleted file mode 100644
index 2aaf478f..00000000
--- a/build-logic/android-plugins/src/main/kotlin/com.github.android-password-store.sentry.gradle.kts
+++ /dev/null
@@ -1,37 +0,0 @@
-@file:Suppress("PropertyName")
-
-import flavors.FlavorDimensions
-import flavors.ProductFlavors
-import io.sentry.android.gradle.extensions.InstrumentationFeature
-
-plugins {
- id("com.android.application")
- id("io.sentry.android.gradle")
-}
-
-val SENTRY_DSN_PROPERTY = "SENTRY_DSN"
-val SENTRY_UPLOAD_MAPPINGS_PROPERTY = "sentryUploadMappings"
-
-android {
- androidComponents {
- onVariants(selector().withFlavor(FlavorDimensions.FREE to ProductFlavors.NON_FREE)) { variant ->
- val sentryDsn = project.providers.environmentVariable(SENTRY_DSN_PROPERTY)
- if (sentryDsn.isPresent) {
- variant.manifestPlaceholders.put("sentryDsn", sentryDsn.get())
- }
- }
- }
-}
-
-sentry {
- autoUploadProguardMapping.set(
- project.providers.gradleProperty(SENTRY_UPLOAD_MAPPINGS_PROPERTY).isPresent
- )
- ignoredBuildTypes.set(setOf("debug"))
- ignoredFlavors.set(setOf(ProductFlavors.FREE))
- tracingInstrumentation {
- enabled.set(true)
- features.set(setOf(InstrumentationFeature.FILE_IO))
- }
- autoInstallation.enabled.set(false)
-}
diff --git a/build-logic/android-plugins/src/main/kotlin/dev/msfjarvis/aps/gradle/AndroidCommon.kt b/build-logic/android-plugins/src/main/kotlin/dev/msfjarvis/aps/gradle/AndroidCommon.kt
new file mode 100644
index 00000000..63679850
--- /dev/null
+++ b/build-logic/android-plugins/src/main/kotlin/dev/msfjarvis/aps/gradle/AndroidCommon.kt
@@ -0,0 +1,47 @@
+package dev.msfjarvis.aps.gradle
+
+import com.android.build.gradle.TestedExtension
+import dev.msfjarvis.aps.gradle.flavors.configureSlimTests
+import org.gradle.api.JavaVersion
+import org.gradle.api.Project
+import org.gradle.kotlin.dsl.configure
+
+@Suppress("UnstableApiUsage")
+object AndroidCommon {
+ fun configure(project: Project) {
+ project.extensions.configure<TestedExtension> {
+ setCompileSdkVersion(31)
+ defaultConfig {
+ minSdk = 23
+ targetSdk = 31
+ }
+
+ sourceSets {
+ named("main") { java.srcDirs("src/main/kotlin") }
+ named("test") { java.srcDirs("src/test/kotlin") }
+ named("androidTest") { java.srcDirs("src/androidTest/kotlin") }
+ }
+
+ packagingOptions {
+ resources.excludes.add("**/*.version")
+ resources.excludes.add("**/*.txt")
+ resources.excludes.add("**/*.kotlin_module")
+ resources.excludes.add("**/plugin.properties")
+ resources.excludes.add("**/META-INF/AL2.0")
+ resources.excludes.add("**/META-INF/LGPL2.1")
+ }
+
+ compileOptions {
+ sourceCompatibility = JavaVersion.VERSION_11
+ targetCompatibility = JavaVersion.VERSION_11
+ }
+
+ testOptions {
+ animationsDisabled = true
+ unitTests.isReturnDefaultValues = true
+ }
+
+ project.configureSlimTests()
+ }
+ }
+}
diff --git a/build-logic/android-plugins/src/main/kotlin/dev/msfjarvis/aps/gradle/ApplicationPlugin.kt b/build-logic/android-plugins/src/main/kotlin/dev/msfjarvis/aps/gradle/ApplicationPlugin.kt
new file mode 100644
index 00000000..79c3a4a0
--- /dev/null
+++ b/build-logic/android-plugins/src/main/kotlin/dev/msfjarvis/aps/gradle/ApplicationPlugin.kt
@@ -0,0 +1,81 @@
+@file:Suppress("UnstableApiUsage")
+
+package dev.msfjarvis.aps.gradle
+
+import com.android.build.gradle.AppPlugin
+import com.android.build.gradle.internal.dsl.BaseAppModuleExtension
+import dev.msfjarvis.aps.gradle.flavors.FlavorDimensions
+import dev.msfjarvis.aps.gradle.flavors.ProductFlavors
+import dev.msfjarvis.aps.gradle.signing.configureBuildSigning
+import dev.msfjarvis.aps.gradle.snapshot.SnapshotExtension
+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
+ }
+ }
+}
diff --git a/build-logic/android-plugins/src/main/kotlin/dev/msfjarvis/aps/gradle/LibraryPlugin.kt b/build-logic/android-plugins/src/main/kotlin/dev/msfjarvis/aps/gradle/LibraryPlugin.kt
new file mode 100644
index 00000000..4d2c7ee3
--- /dev/null
+++ b/build-logic/android-plugins/src/main/kotlin/dev/msfjarvis/aps/gradle/LibraryPlugin.kt
@@ -0,0 +1,15 @@
+package dev.msfjarvis.aps.gradle
+
+import com.android.build.gradle.LibraryPlugin
+import org.gradle.api.Plugin
+import org.gradle.api.Project
+import org.gradle.kotlin.dsl.apply
+
+@Suppress("Unused")
+class LibraryPlugin : Plugin<Project> {
+
+ override fun apply(project: Project) {
+ project.pluginManager.apply(LibraryPlugin::class)
+ AndroidCommon.configure(project)
+ }
+}
diff --git a/build-logic/android-plugins/src/main/kotlin/dev/msfjarvis/aps/gradle/PublishedAndroidLibraryPlugin.kt b/build-logic/android-plugins/src/main/kotlin/dev/msfjarvis/aps/gradle/PublishedAndroidLibraryPlugin.kt
new file mode 100644
index 00000000..6e9c3d56
--- /dev/null
+++ b/build-logic/android-plugins/src/main/kotlin/dev/msfjarvis/aps/gradle/PublishedAndroidLibraryPlugin.kt
@@ -0,0 +1,40 @@
+@file:Suppress("UnstableApiUsage")
+
+package dev.msfjarvis.aps.gradle
+
+import com.vanniktech.maven.publish.AndroidSingleVariantLibrary
+import com.vanniktech.maven.publish.MavenPublishBaseExtension
+import com.vanniktech.maven.publish.MavenPublishBasePlugin
+import com.vanniktech.maven.publish.SonatypeHost
+import org.gradle.api.Plugin
+import org.gradle.api.Project
+import org.gradle.kotlin.dsl.apply
+import org.gradle.kotlin.dsl.getByType
+import org.gradle.kotlin.dsl.provideDelegate
+import org.gradle.plugins.signing.SigningExtension
+import org.gradle.plugins.signing.SigningPlugin
+
+@Suppress("Unused")
+class PublishedAndroidLibraryPlugin : Plugin<Project> {
+
+ override fun apply(project: Project) {
+ project.plugins.run {
+ apply(LibraryPlugin::class)
+ apply(MavenPublishBasePlugin::class)
+ apply(SigningPlugin::class)
+ }
+ project.extensions.getByType<MavenPublishBaseExtension>().run {
+ publishToMavenCentral(SonatypeHost.DEFAULT)
+ signAllPublications()
+ configure(AndroidSingleVariantLibrary())
+ pomFromGradleProperties()
+ }
+ project.afterEvaluate {
+ project.extensions.getByType<SigningExtension>().run {
+ val signingKey: String? by project
+ val signingPassword: String? by project
+ useInMemoryPgpKeys(signingKey, signingPassword)
+ }
+ }
+ }
+}
diff --git a/build-logic/android-plugins/src/main/kotlin/dev/msfjarvis/aps/gradle/RenameArtifactsPlugin.kt b/build-logic/android-plugins/src/main/kotlin/dev/msfjarvis/aps/gradle/RenameArtifactsPlugin.kt
new file mode 100644
index 00000000..971e3245
--- /dev/null
+++ b/build-logic/android-plugins/src/main/kotlin/dev/msfjarvis/aps/gradle/RenameArtifactsPlugin.kt
@@ -0,0 +1,37 @@
+package dev.msfjarvis.aps.gradle
+
+import com.android.build.api.artifact.SingleArtifact
+import com.android.build.api.variant.ApplicationAndroidComponentsExtension
+import com.android.build.gradle.internal.dsl.BaseAppModuleExtension
+import dev.msfjarvis.aps.gradle.artifacts.CollectApksTask
+import dev.msfjarvis.aps.gradle.artifacts.CollectBundleTask
+import org.gradle.api.Plugin
+import org.gradle.api.Project
+import org.gradle.kotlin.dsl.getByType
+import org.gradle.kotlin.dsl.register
+
+@Suppress("Unused")
+class RenameArtifactsPlugin : Plugin<Project> {
+
+ override fun apply(project: Project) {
+ project.pluginManager.withPlugin("com.android.application") {
+ val android = project.extensions.getByType<BaseAppModuleExtension>()
+ project.extensions.getByType<ApplicationAndroidComponentsExtension>().run {
+ onVariants { variant ->
+ project.tasks.register<CollectApksTask>("collect${variant.name.capitalize()}Apks") {
+ variantName.set(variant.name)
+ apkFolder.set(variant.artifacts.get(SingleArtifact.APK))
+ builtArtifactsLoader.set(variant.artifacts.getBuiltArtifactsLoader())
+ outputDirectory.set(project.layout.projectDirectory.dir("outputs"))
+ }
+ project.tasks.register<CollectBundleTask>("collect${variant.name.capitalize()}Bundle") {
+ variantName.set(variant.name)
+ versionName.set(android.defaultConfig.versionName)
+ bundleFile.set(variant.artifacts.get(SingleArtifact.BUNDLE))
+ outputDirectory.set(project.layout.projectDirectory.dir("outputs"))
+ }
+ }
+ }
+ }
+ }
+}
diff --git a/build-logic/android-plugins/src/main/kotlin/dev/msfjarvis/aps/gradle/SentryPlugin.kt b/build-logic/android-plugins/src/main/kotlin/dev/msfjarvis/aps/gradle/SentryPlugin.kt
new file mode 100644
index 00000000..2e5991e4
--- /dev/null
+++ b/build-logic/android-plugins/src/main/kotlin/dev/msfjarvis/aps/gradle/SentryPlugin.kt
@@ -0,0 +1,48 @@
+package dev.msfjarvis.aps.gradle
+
+import com.android.build.api.variant.ApplicationAndroidComponentsExtension
+import dev.msfjarvis.aps.gradle.flavors.FlavorDimensions
+import dev.msfjarvis.aps.gradle.flavors.ProductFlavors
+import io.sentry.android.gradle.SentryPlugin
+import io.sentry.android.gradle.extensions.InstrumentationFeature
+import io.sentry.android.gradle.extensions.SentryPluginExtension
+import org.gradle.api.Plugin
+import org.gradle.api.Project
+import org.gradle.kotlin.dsl.apply
+import org.gradle.kotlin.dsl.getByType
+
+@Suppress("Unused")
+class SentryPlugin : Plugin<Project> {
+
+ override fun apply(project: Project) {
+ project.pluginManager.withPlugin("com.android.application") {
+ project.extensions.getByType<ApplicationAndroidComponentsExtension>().run {
+ onVariants(selector().withFlavor(FlavorDimensions.FREE to ProductFlavors.NON_FREE)) {
+ variant ->
+ val sentryDsn = project.providers.environmentVariable(SENTRY_DSN_PROPERTY)
+ if (sentryDsn.isPresent) {
+ variant.manifestPlaceholders.put("sentryDsn", sentryDsn.get())
+ }
+ }
+ }
+ project.plugins.apply(SentryPlugin::class)
+ project.extensions.getByType<SentryPluginExtension>().run {
+ autoUploadProguardMapping.set(
+ project.providers.gradleProperty(SENTRY_UPLOAD_MAPPINGS_PROPERTY).isPresent
+ )
+ ignoredBuildTypes.set(setOf("debug"))
+ ignoredFlavors.set(setOf(ProductFlavors.FREE))
+ tracingInstrumentation {
+ enabled.set(true)
+ features.set(setOf(InstrumentationFeature.FILE_IO))
+ }
+ autoInstallation.enabled.set(false)
+ }
+ }
+ }
+
+ private companion object {
+ private const val SENTRY_DSN_PROPERTY = "SENTRY_DSN"
+ private const val SENTRY_UPLOAD_MAPPINGS_PROPERTY = "sentryUploadMappings"
+ }
+}
diff --git a/build-logic/android-plugins/src/main/kotlin/artifacts/CollectApksTask.kt b/build-logic/android-plugins/src/main/kotlin/dev/msfjarvis/aps/gradle/artifacts/CollectApksTask.kt
index 07f52943..39c95a9e 100644
--- a/build-logic/android-plugins/src/main/kotlin/artifacts/CollectApksTask.kt
+++ b/build-logic/android-plugins/src/main/kotlin/dev/msfjarvis/aps/gradle/artifacts/CollectApksTask.kt
@@ -1,4 +1,4 @@
-package artifacts
+package dev.msfjarvis.aps.gradle.artifacts
import com.android.build.api.variant.BuiltArtifactsLoader
import java.nio.file.Files
diff --git a/build-logic/android-plugins/src/main/kotlin/artifacts/CollectBundleTask.kt b/build-logic/android-plugins/src/main/kotlin/dev/msfjarvis/aps/gradle/artifacts/CollectBundleTask.kt
index 709744f2..c454d49f 100644
--- a/build-logic/android-plugins/src/main/kotlin/artifacts/CollectBundleTask.kt
+++ b/build-logic/android-plugins/src/main/kotlin/dev/msfjarvis/aps/gradle/artifacts/CollectBundleTask.kt
@@ -1,4 +1,4 @@
-package artifacts
+package dev.msfjarvis.aps.gradle.artifacts
import java.nio.file.Files
import java.nio.file.StandardCopyOption
diff --git a/build-logic/android-plugins/src/main/kotlin/flavors/ProductFlavors.kt b/build-logic/android-plugins/src/main/kotlin/dev/msfjarvis/aps/gradle/flavors/ProductFlavors.kt
index a3185f65..be474bce 100644
--- a/build-logic/android-plugins/src/main/kotlin/flavors/ProductFlavors.kt
+++ b/build-logic/android-plugins/src/main/kotlin/dev/msfjarvis/aps/gradle/flavors/ProductFlavors.kt
@@ -3,7 +3,7 @@
* SPDX-License-Identifier: GPL-3.0-only
*/
-package flavors
+package dev.msfjarvis.aps.gradle.flavors
object FlavorDimensions {
const val FREE = "free"
diff --git a/build-logic/android-plugins/src/main/kotlin/flavors/SlimTests.kt b/build-logic/android-plugins/src/main/kotlin/dev/msfjarvis/aps/gradle/flavors/SlimTests.kt
index 2b0cb8eb..d89d0ba7 100644
--- a/build-logic/android-plugins/src/main/kotlin/flavors/SlimTests.kt
+++ b/build-logic/android-plugins/src/main/kotlin/dev/msfjarvis/aps/gradle/flavors/SlimTests.kt
@@ -3,7 +3,7 @@
* SPDX-License-Identifier: GPL-3.0-only
*/
-package flavors
+package dev.msfjarvis.aps.gradle.flavors
import com.android.build.api.variant.ApplicationAndroidComponentsExtension
import com.android.build.api.variant.LibraryAndroidComponentsExtension
diff --git a/build-logic/android-plugins/src/main/kotlin/signing/AppSigning.kt b/build-logic/android-plugins/src/main/kotlin/dev/msfjarvis/aps/gradle/signing/AppSigning.kt
index 79f91631..8da96230 100644
--- a/build-logic/android-plugins/src/main/kotlin/signing/AppSigning.kt
+++ b/build-logic/android-plugins/src/main/kotlin/dev/msfjarvis/aps/gradle/signing/AppSigning.kt
@@ -3,7 +3,7 @@
* SPDX-License-Identifier: GPL-3.0-only
*/
-package signing
+package dev.msfjarvis.aps.gradle.signing
import com.android.build.gradle.internal.dsl.BaseAppModuleExtension
import java.util.Properties
diff --git a/build-logic/android-plugins/src/main/kotlin/snapshot/SnapshotExtension.kt b/build-logic/android-plugins/src/main/kotlin/dev/msfjarvis/aps/gradle/snapshot/SnapshotExtension.kt
index 80a352a5..ba6265cd 100644
--- a/build-logic/android-plugins/src/main/kotlin/snapshot/SnapshotExtension.kt
+++ b/build-logic/android-plugins/src/main/kotlin/dev/msfjarvis/aps/gradle/snapshot/SnapshotExtension.kt
@@ -3,7 +3,7 @@
* SPDX-License-Identifier: GPL-3.0-only
*/
-package snapshot
+package dev.msfjarvis.aps.gradle.snapshot
abstract class SnapshotExtension {
abstract var snapshot: Boolean
diff --git a/build-logic/android-plugins/src/main/kotlin/versioning/Constants.kt b/build-logic/android-plugins/src/main/kotlin/dev/msfjarvis/aps/gradle/versioning/Constants.kt
index 000f5438..0d6f5c67 100644
--- a/build-logic/android-plugins/src/main/kotlin/versioning/Constants.kt
+++ b/build-logic/android-plugins/src/main/kotlin/dev/msfjarvis/aps/gradle/versioning/Constants.kt
@@ -3,7 +3,7 @@
* SPDX-License-Identifier: GPL-3.0-only
*/
-package versioning
+package dev.msfjarvis.aps.gradle.versioning
const val VERSIONING_PROP_FILE = "version.properties"
const val VERSIONING_PROP_VERSION_NAME = "versioning-plugin.versionName"
diff --git a/build-logic/android-plugins/src/main/kotlin/versioning/VersioningPlugin.kt b/build-logic/android-plugins/src/main/kotlin/dev/msfjarvis/aps/gradle/versioning/VersioningPlugin.kt
index 043cd280..6b604e75 100644
--- a/build-logic/android-plugins/src/main/kotlin/versioning/VersioningPlugin.kt
+++ b/build-logic/android-plugins/src/main/kotlin/dev/msfjarvis/aps/gradle/versioning/VersioningPlugin.kt
@@ -3,7 +3,7 @@
* SPDX-License-Identifier: GPL-3.0-only
*/
-package versioning
+package dev.msfjarvis.aps.gradle.versioning
import com.android.build.gradle.internal.plugins.AppPlugin
import com.vdurmont.semver4j.Semver
diff --git a/build-logic/android-plugins/src/main/kotlin/versioning/VersioningTask.kt b/build-logic/android-plugins/src/main/kotlin/dev/msfjarvis/aps/gradle/versioning/VersioningTask.kt
index fe437c04..762cf57b 100644
--- a/build-logic/android-plugins/src/main/kotlin/versioning/VersioningTask.kt
+++ b/build-logic/android-plugins/src/main/kotlin/dev/msfjarvis/aps/gradle/versioning/VersioningTask.kt
@@ -3,7 +3,7 @@
* SPDX-License-Identifier: GPL-3.0-only
*/
-package versioning
+package dev.msfjarvis.aps.gradle.versioning
import com.vdurmont.semver4j.Semver
import org.gradle.api.DefaultTask