Skip to content

Commit 73d9f21

Browse files
runningcodeclaude
andcommitted
fix(config-cache): Resolve CLI path via ValueSource task input
SentryCliExecTask resolved the sentry-cli path inside its action by calling getSentryCliPath() at execution time, so the path was never a declared task input. Wire the existing SentryCliValueSource into a new @input cliExecutable property via cliExecutableProvider(), so the path is a config-cache-safe, lazily resolved task input. The now-unused sentryProjectDir/sentryRootDir task properties (and the duplicate getIsolatedRootProjectDir helper) are removed; the value source resolves those from the project itself. buildDirectory stays, since extraction from resources still needs it. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
1 parent 30bbc15 commit 73d9f21

9 files changed

Lines changed: 18 additions & 32 deletions

File tree

plugin-build/src/main/kotlin/io/sentry/android/gradle/tasks/SentryCliExecTask.kt

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -37,9 +37,7 @@ abstract class SentryCliExecTask : Exec() {
3737

3838
@get:Internal abstract val sentryTelemetryService: Property<SentryTelemetryService>
3939

40-
@get:Internal abstract val sentryProjectDir: DirectoryProperty
41-
42-
@get:Internal abstract val sentryRootDir: DirectoryProperty
40+
@get:Input abstract val cliExecutable: Property<String>
4341

4442
@get:Internal abstract val buildDirectory: DirectoryProperty
4543

@@ -94,9 +92,7 @@ abstract class SentryCliExecTask : Exec() {
9492
args.add(1, "/c")
9593
}
9694

97-
val cliPath =
98-
SentryCliProvider.getSentryCliPath(sentryProjectDir, buildDirectory, sentryRootDir)
99-
args.add(SentryCliProvider.maybeExtractFromResources(buildDirectory, cliPath))
95+
args.add(SentryCliProvider.maybeExtractFromResources(buildDirectory, cliExecutable.get()))
10096
args.addAll(preArgs())
10197

10298
getArguments(args)

plugin-build/src/main/kotlin/io/sentry/android/gradle/util/SentryCliExec.kt

Lines changed: 2 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,33 +1,23 @@
11
package io.sentry.android.gradle.util
22

33
import io.sentry.BuildConfig
4+
import io.sentry.android.gradle.cliExecutableProvider
45
import io.sentry.android.gradle.tasks.SentryCliExecTask
56
import io.sentry.android.gradle.util.CliFailureReason.OUTDATED
67
import java.io.ByteArrayOutputStream
78
import org.gradle.api.GradleException
8-
import org.gradle.api.Project
9-
import org.gradle.api.file.Directory
109
import org.gradle.process.ExecSpec
1110

1211
fun ExecSpec.setSentryPipelineEnv() {
1312
environment("SENTRY_PIPELINE", "sentry-gradle-plugin/${BuildConfig.Version}")
1413
}
1514

16-
private fun Project.getIsolatedRootProjectDir(): Directory {
17-
return if (GradleVersions.CURRENT >= GradleVersions.VERSION_8_8) {
18-
isolated.rootProject.projectDirectory
19-
} else {
20-
rootProject.layout.projectDirectory
21-
}
22-
}
23-
2415
/**
2516
* An ext function for tasks that wrap sentry-cli, which provides common error handling. Must be
2617
* called at configuration phase (=when registering a task).
2718
*/
2819
fun SentryCliExecTask.asSentryCliExec() {
29-
sentryProjectDir.set(project.layout.projectDirectory)
30-
sentryRootDir.set(project.getIsolatedRootProjectDir())
20+
cliExecutable.set(project.cliExecutableProvider())
3121
buildDirectory.set(project.layout.buildDirectory)
3222

3323
isIgnoreExitValue = true

plugin-build/src/test/kotlin/io/sentry/android/gradle/tasks/BundleSourcesTaskTest.kt

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

33
import com.google.common.truth.Truth.assertThat
4+
import io.sentry.android.gradle.cliExecutableProvider
45
import io.sentry.android.gradle.sourcecontext.BundleSourcesTask
56
import io.sentry.android.gradle.sourcecontext.GenerateBundleIdTask.Companion.SENTRY_BUNDLE_ID_PROPERTY
67
import java.io.File
@@ -242,8 +243,7 @@ class BundleSourcesTaskTest {
242243
}
243244

244245
private fun SentryCliExecTask.configureCliPaths(project: Project) {
245-
sentryProjectDir.set(project.layout.projectDirectory)
246-
sentryRootDir.set(project.rootProject.layout.projectDirectory)
246+
cliExecutable.set(project.cliExecutableProvider())
247247
buildDirectory.set(project.layout.buildDirectory)
248248
}
249249

plugin-build/src/test/kotlin/io/sentry/android/gradle/tasks/SentryCliExecTaskTest.kt

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

33
import io.sentry.android.gradle.SentryCliProvider
4+
import io.sentry.android.gradle.cliExecutableProvider
45
import java.io.File
56
import kotlin.test.assertEquals
67
import kotlin.test.assertNull
@@ -139,8 +140,7 @@ class SentryCliExecTaskTest {
139140
}
140141

141142
private fun SentryCliExecTask.configureCliPaths(project: Project) {
142-
sentryProjectDir.set(project.layout.projectDirectory)
143-
sentryRootDir.set(project.rootProject.layout.projectDirectory)
143+
cliExecutable.set(project.cliExecutableProvider())
144144
buildDirectory.set(project.layout.buildDirectory)
145145
}
146146

plugin-build/src/test/kotlin/io/sentry/android/gradle/tasks/SentryUploadAppArtifactTaskTest.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import com.google.common.truth.FailureMetadata
44
import com.google.common.truth.Subject
55
import com.google.common.truth.Truth.assertAbout
66
import com.google.common.truth.Truth.assertThat
7+
import io.sentry.android.gradle.cliExecutableProvider
78
import kotlin.test.assertEquals
89
import kotlin.test.assertFailsWith
910
import org.gradle.api.Project
@@ -314,8 +315,7 @@ class SentryUploadAppArtifactTaskTest {
314315
}
315316

316317
private fun SentryCliExecTask.configureCliPaths(project: Project) {
317-
sentryProjectDir.set(project.layout.projectDirectory)
318-
sentryRootDir.set(project.rootProject.layout.projectDirectory)
318+
cliExecutable.set(project.cliExecutableProvider())
319319
buildDirectory.set(project.layout.buildDirectory)
320320
}
321321

plugin-build/src/test/kotlin/io/sentry/android/gradle/tasks/SentryUploadNativeSymbolsTaskTest.kt

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

3+
import io.sentry.android.gradle.cliExecutableProvider
34
import java.io.File
45
import kotlin.test.assertEquals
56
import kotlin.test.assertFalse
@@ -179,8 +180,7 @@ class SentryUploadNativeSymbolsTaskTest {
179180
): SentryUploadNativeSymbolsTask =
180181
project.tasks
181182
.register("testUploadNativeSymbols", SentryUploadNativeSymbolsTask::class.java) {
182-
it.sentryProjectDir.set(project.layout.projectDirectory)
183-
it.sentryRootDir.set(project.rootProject.layout.projectDirectory)
183+
it.cliExecutable.set(project.cliExecutableProvider())
184184
it.buildDirectory.set(project.layout.buildDirectory)
185185
block(it)
186186
}

plugin-build/src/test/kotlin/io/sentry/android/gradle/tasks/SentryUploadProguardMappingTaskTest.kt

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

3+
import io.sentry.android.gradle.cliExecutableProvider
34
import java.io.File
45
import java.util.UUID
56
import kotlin.test.assertEquals
@@ -324,8 +325,7 @@ class SentryUploadProguardMappingTaskTest {
324325
}
325326

326327
private fun SentryCliExecTask.configureCliPaths(project: Project) {
327-
sentryProjectDir.set(project.layout.projectDirectory)
328-
sentryRootDir.set(project.rootProject.layout.projectDirectory)
328+
cliExecutable.set(project.cliExecutableProvider())
329329
buildDirectory.set(project.layout.buildDirectory)
330330
}
331331

plugin-build/src/test/kotlin/io/sentry/android/gradle/tasks/SentryUploadSnapshotsTaskTest.kt

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

33
import com.google.common.truth.Truth.assertThat
4+
import io.sentry.android.gradle.cliExecutableProvider
45
import java.io.File
56
import kotlin.test.assertEquals
67
import kotlin.test.assertFalse
@@ -219,8 +220,7 @@ class SentryUploadSnapshotsTaskTest {
219220
): SentryUploadSnapshotsTask =
220221
project.tasks
221222
.register("testUploadSnapshots", SentryUploadSnapshotsTask::class.java) {
222-
it.sentryProjectDir.set(project.layout.projectDirectory)
223-
it.sentryRootDir.set(project.rootProject.layout.projectDirectory)
223+
it.cliExecutable.set(project.cliExecutableProvider())
224224
it.buildDirectory.set(project.layout.buildDirectory)
225225
block(it)
226226
}

plugin-build/src/test/kotlin/io/sentry/android/gradle/tasks/UploadSourceBundleTaskTest.kt

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

3+
import io.sentry.android.gradle.cliExecutableProvider
34
import io.sentry.android.gradle.sourcecontext.UploadSourceBundleTask
45
import java.io.File
56
import kotlin.test.assertEquals
@@ -197,8 +198,7 @@ class UploadSourceBundleTaskTest {
197198
}
198199

199200
private fun SentryCliExecTask.configureCliPaths(project: Project) {
200-
sentryProjectDir.set(project.layout.projectDirectory)
201-
sentryRootDir.set(project.rootProject.layout.projectDirectory)
201+
cliExecutable.set(project.cliExecutableProvider())
202202
buildDirectory.set(project.layout.buildDirectory)
203203
}
204204
}

0 commit comments

Comments
 (0)