Skip to content

Commit 2a8069f

Browse files
authored
Get configuration cache telemetry from BuildFeatures (#2212)
1 parent d2581cf commit 2a8069f

File tree

3 files changed

+24
-1
lines changed

3 files changed

+24
-1
lines changed
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
package io.embrace.android.gradle.plugin.buildreporter
2+
3+
import org.gradle.api.Project
4+
import org.gradle.api.configuration.BuildFeatures
5+
import org.gradle.api.provider.Provider
6+
import org.gradle.invocation.DefaultGradle
7+
8+
/**
9+
* A wrapper around the BuildFeatures API, used to check if the configuration cache is enabled.
10+
* BuildFeatures API is available for Gradle 8.5 and above.
11+
*/
12+
class BuildFeaturesWrapper {
13+
fun isConfigurationCacheEnabled(project: Project): Provider<Boolean> {
14+
return try {
15+
(project.gradle as DefaultGradle).services.get(BuildFeatures::class.java).configurationCache.active
16+
} catch (e: Exception) {
17+
project.provider { false }
18+
}
19+
}
20+
}

embrace-gradle-plugin/src/main/java/io/embrace/android/gradle/plugin/buildreporter/BuildTelemetryCollector.kt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,9 @@ class BuildTelemetryCollector {
7979

8080
private fun Project.isConfigurationCacheEnabled(): Boolean {
8181
return try {
82-
if (isAtLeast(GradleVersion.GRADLE_7_6)) {
82+
if (isAtLeast(GradleVersion.GRADLE_8_5)) {
83+
return BuildFeaturesWrapper().isConfigurationCacheEnabled(project).get()
84+
} else if (isAtLeast(GradleVersion.GRADLE_7_6)) {
8385
val isConfigurationCacheRequestedMethod =
8486
this.gradle.startParameter::class.java.getMethod("isConfigurationCacheRequested")
8587
return isConfigurationCacheRequestedMethod.invoke(this.gradle.startParameter) as Boolean

embrace-gradle-plugin/src/main/java/io/embrace/android/gradle/plugin/gradle/GradleVersion.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ sealed class GradleVersion(private val version: org.gradle.util.GradleVersion) :
99
object CURRENT : GradleVersion(org.gradle.util.GradleVersion.current())
1010
object GRADLE_7_6 : GradleVersion(version("7.6"))
1111
object GRADLE_8_0 : GradleVersion(version("8.0"))
12+
object GRADLE_8_5 : GradleVersion(version("8.5"))
1213

1314
override fun compareTo(other: GradleVersion): Int {
1415
return version.compareTo(other.version)

0 commit comments

Comments
 (0)