Skip to content

Commit 02529c6

Browse files
runningcodeclaude
andauthored
Add Distribution API to Sentry Android Gradle Plugin (#986)
* Add Build Distribution API to Sentry Android Gradle Plugin Add BuildDistributionExtension with enabledFor property to specify which build variants should have build distribution enabled. This commit only adds the API - no functionality is wired yet. Usage: ```gradle sentry { buildDistribution { enabledFor.set(["freeDebug", "paidRelease"]) } } ``` Closes EME-277 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com> * Rename BuildDistribution to Distribution - Rename BuildDistributionExtension to DistributionExtension - Rename buildDistribution DSL to distribution - Update tests and class names accordingly * Apply spotless formatting * Address PR review comments - Rename enabledFor to enabledVariants for clarity - Add documentation clarifying that global ignore settings have no relation to distribution settings - Keep @experimental annotation for new APIs * Import @experimental annotation and apply spotless formatting - Import @experimental annotation in SentryPluginExtension for cleaner usage - Apply spotless formatting to comment wrapping - Use consistent short @experimental annotation form --------- Co-authored-by: Claude <noreply@anthropic.com>
1 parent 4d0c655 commit 02529c6

3 files changed

Lines changed: 53 additions & 0 deletions

File tree

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
package io.sentry.android.gradle.extensions
2+
3+
import javax.inject.Inject
4+
import org.gradle.api.model.ObjectFactory
5+
import org.gradle.api.provider.SetProperty
6+
import org.jetbrains.annotations.ApiStatus.Experimental
7+
8+
@Experimental
9+
open class DistributionExtension @Inject constructor(objects: ObjectFactory) {
10+
11+
/**
12+
* Set of Android build variants that should have distribution enabled.
13+
*
14+
* Note: The global ignore settings (ignoredVariants, ignoredBuildTypes, ignoredFlavors) have no
15+
* relation to distribution and do not affect which variants are enabled here.
16+
*/
17+
val enabledVariants: SetProperty<String> =
18+
objects.setProperty(String::class.java).convention(emptySet())
19+
}

plugin-build/src/main/kotlin/io/sentry/android/gradle/extensions/SentryPluginExtension.kt

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -113,6 +113,13 @@ abstract class SentryPluginExtension @Inject constructor(project: Project) {
113113
sizeAnalysisAction.execute(sizeAnalysis)
114114
}
115115

116+
val distribution: DistributionExtension = objects.newInstance(DistributionExtension::class.java)
117+
118+
@Experimental
119+
fun distribution(distributionAction: Action<DistributionExtension>) {
120+
distributionAction.execute(distribution)
121+
}
122+
116123
val vcsInfo: VcsInfoExtension = objects.newInstance(VcsInfoExtension::class.java)
117124

118125
/** Configure the VCS information for build uploads. */
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
package io.sentry.android.gradle.extensions
2+
3+
import kotlin.test.assertEquals
4+
import kotlin.test.assertTrue
5+
import org.gradle.testfixtures.ProjectBuilder
6+
import org.junit.Test
7+
8+
class DistributionExtensionTest {
9+
10+
@Test
11+
fun `enabledVariants is empty by default`() {
12+
val project = ProjectBuilder.builder().build()
13+
val extension = project.objects.newInstance(DistributionExtension::class.java)
14+
15+
assertTrue(extension.enabledVariants.get().isEmpty())
16+
}
17+
18+
@Test
19+
fun `enabledVariants can be configured with variant names`() {
20+
val project = ProjectBuilder.builder().build()
21+
val extension = project.objects.newInstance(DistributionExtension::class.java)
22+
23+
extension.enabledVariants.set(setOf("freeDebug", "paidRelease"))
24+
25+
assertEquals(setOf("freeDebug", "paidRelease"), extension.enabledVariants.get())
26+
}
27+
}

0 commit comments

Comments
 (0)