Skip to content

Commit 5abe0ef

Browse files
runningcodeclaude
andauthored
feat(snapshot): Make metadata plugin variant-aware (#1123)
* feat(snapshot): Make metadata plugin variant-aware Register per-variant ExportPreviewMetadata tasks using the AndroidComponentsExtension onVariants API instead of hard-coding the debug variant. Each variant now gets its own task (e.g. exportPreviewMetadataDebug, exportPreviewMetadataRelease) with the correct compile task, runtime classpath, and output path. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * chore(snapshot): Apply spotless formatting Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
1 parent ae7ed20 commit 5abe0ef

File tree

2 files changed

+16
-12
lines changed

2 files changed

+16
-12
lines changed

plugin-build/src/main/kotlin/io/sentry/android/gradle/snapshot/metadata/ExportPreviewMetadataTask.kt

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
package io.sentry.android.gradle.snapshot.metadata
22

3-
import com.android.build.gradle.BaseExtension
43
import groovy.json.JsonOutput
4+
import io.sentry.android.gradle.SentryTasksProvider.capitalized
55
import java.util.zip.ZipInputStream
66
import org.gradle.api.DefaultTask
77
import org.gradle.api.Project
@@ -155,22 +155,24 @@ abstract class ExportPreviewMetadataTask : DefaultTask() {
155155
fun register(
156156
project: Project,
157157
extension: SentrySnapshotMetadataExtension,
158-
android: BaseExtension,
158+
variantName: String,
159159
): TaskProvider<ExportPreviewMetadataTask> {
160+
val taskSuffix = variantName.capitalized
161+
val compileTaskName = "compile${taskSuffix}Kotlin"
162+
160163
return project.tasks.register(
161-
"exportPreviewMetadata",
164+
"exportPreviewMetadata$taskSuffix",
162165
ExportPreviewMetadataTask::class.java,
163166
) { task ->
164167
task.includePrivatePreviews.set(extension.includePrivatePreviews)
165168

166169
// Local compiled classes
167-
// TODO Debug is hard coded here. we should allow different variants
168-
task.inputClasspath.from(project.tasks.named("compileDebugKotlin").map { it.outputs.files })
170+
task.inputClasspath.from(project.tasks.named(compileTaskName).map { it.outputs.files })
169171

170172
// Dependency project classes
171-
val debugClasspath = project.configurations.getByName("debugRuntimeClasspath")
173+
val variantClasspath = project.configurations.getByName("${variantName}RuntimeClasspath")
172174
task.inputClasspath.from(
173-
debugClasspath.incoming
175+
variantClasspath.incoming
174176
.artifactView { view ->
175177
view.componentFilter { id -> id is ProjectComponentIdentifier }
176178
view.attributes { attrs ->
@@ -182,11 +184,11 @@ abstract class ExportPreviewMetadataTask : DefaultTask() {
182184

183185
task.outputFile.set(
184186
project.layout.buildDirectory.file(
185-
"sentry-snapshots/preview-metadata/preview-metadata.json"
187+
"sentry-snapshots/preview-metadata/$variantName/preview-metadata.json"
186188
)
187189
)
188190

189-
task.dependsOn("compileDebugKotlin")
191+
task.dependsOn(compileTaskName)
190192
}
191193
}
192194
}

plugin-build/src/main/kotlin/io/sentry/android/gradle/snapshot/metadata/SentrySnapshotMetadataPlugin.kt

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package io.sentry.android.gradle.snapshot.metadata
22

3-
import com.android.build.gradle.BaseExtension
3+
import com.android.build.api.variant.AndroidComponentsExtension
44
import org.gradle.api.Plugin
55
import org.gradle.api.Project
66

@@ -15,8 +15,10 @@ class SentrySnapshotMetadataPlugin : Plugin<Project> {
1515
)
1616

1717
fun wireWithAndroid() {
18-
val android = project.extensions.getByType(BaseExtension::class.java)
19-
ExportPreviewMetadataTask.register(project, extension, android)
18+
val androidComponents = project.extensions.getByType(AndroidComponentsExtension::class.java)
19+
androidComponents.onVariants { variant ->
20+
ExportPreviewMetadataTask.register(project, extension, variant.name)
21+
}
2022
}
2123

2224
project.pluginManager.withPlugin("com.android.library") { wireWithAndroid() }

0 commit comments

Comments
 (0)