fixup! Use FlowParameter for buildFinish event
diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/StatisticsBuildFlowManager.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/StatisticsBuildFlowManager.kt index 9824982..998ca8d 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/StatisticsBuildFlowManager.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/StatisticsBuildFlowManager.kt
@@ -11,8 +11,6 @@ import org.gradle.api.services.ServiceReference import org.gradle.api.tasks.Input import org.jetbrains.kotlin.gradle.plugin.statistics.BuildFlowService -import org.jetbrains.kotlin.gradle.plugin.statistics.KotlinBuildStatsService -import org.jetbrains.kotlin.gradle.plugin.statistics.MetricContainer import org.jetbrains.kotlin.gradle.report.BuildMetricsService import org.jetbrains.kotlin.gradle.report.BuildScanExtensionHolder import javax.inject.Inject @@ -28,15 +26,12 @@ fun subscribeForBuildResult(project: Project) { val buildScanExtension = project.rootProject.extensions.findByName("buildScan") - val buildScan = buildScanExtension?.let { BuildScanExtensionHolder(it) } - val configurationTimeMetrics = project.provider { - KotlinBuildStatsService.getInstance()?.collectedStartMetrics(project) - } + val buildScanHolder = buildScanExtension?.let { BuildScanExtensionHolder(it) } + flowScope.always( BuildFinishFlowAction::class.java ) { spec -> - spec.parameters.buildScanExtensionHolder.set(buildScan) - spec.parameters.configurationTimeMetrics.set(configurationTimeMetrics) + spec.parameters.buildScanExtensionHolder.set(buildScanHolder) spec.parameters.buildFailed.set(flowProviders.buildWorkResult.map { it.failure.isPresent }) } } @@ -59,14 +54,11 @@ @get:Input val buildScanExtensionHolder: Property<BuildScanExtensionHolder?> - - @get:Input - val configurationTimeMetrics: Property<MetricContainer> } override fun execute(parameters: Parameters) { parameters.buildFlowServiceProperty.get().recordBuildFinished( - parameters.action.orNull, parameters.buildFailed.get(), parameters.configurationTimeMetrics.get() + parameters.action.orNull, parameters.buildFailed.get() ) parameters.buildMetricService.orNull?.addCollectedTagsToBuildScan(parameters.buildScanExtensionHolder.orNull) }
diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/statistics/BuildFlowService.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/statistics/BuildFlowService.kt index 189d399..281a022 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/statistics/BuildFlowService.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/statistics/BuildFlowService.kt
@@ -27,20 +27,18 @@ internal abstract class BuildFlowService : BuildService<BuildFlowService.Parameters>, AutoCloseable, OperationCompletionListener { private var buildFailed: Boolean = false - interface Parameters : BuildServiceParameters { val configurationMetrics: Property<MetricContainer> } + companion object { fun registerIfAbsentImpl( project: Project, ): Provider<BuildFlowService> { - val buildService = project.gradle.registerClassLoaderScopedBuildService(BuildFlowService::class) { buidlService -> - project.gradle.projectsEvaluated { - buidlService.parameters.configurationMetrics.set(project.provider { - KotlinBuildStatsService.getInstance()?.collectedStartMetrics(project) - }) - } + val buildService = project.gradle.registerClassLoaderScopedBuildService(BuildFlowService::class) { spec -> + spec.parameters.configurationMetrics.set(project.provider { + KotlinBuildStatsService.getInstance()?.collectedStartMetrics(project) + }) } KotlinBuildStatsService.applyIfInitialised { @@ -63,12 +61,12 @@ } override fun close() { - recordBuildFinished(null, buildFailed, parameters.configurationMetrics.orElse(MetricContainer()).get()) + recordBuildFinished(null, buildFailed) } - internal fun recordBuildFinished(action: String?, buildFailed: Boolean, configurationTimeMetrics: MetricContainer) { + internal fun recordBuildFinished(action: String?, buildFailed: Boolean) { KotlinBuildStatsService.applyIfInitialised { - it.recordBuildFinish(action, buildFailed, configurationTimeMetrics) + it.recordBuildFinish(action, buildFailed, parameters.configurationMetrics.orElse(MetricContainer()).get()) } } }
diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/statistics/KotlinBuildStatHandler.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/statistics/KotlinBuildStatHandler.kt index 9147b66..a1f94ce 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/statistics/KotlinBuildStatHandler.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/statistics/KotlinBuildStatHandler.kt
@@ -112,38 +112,42 @@ configurationTimeMetrics.put(BooleanMetrics.ENABLED_DOKKA, true) } for (configuration in project.configurations) { - val configurationName = configuration.name - val dependencies = configuration.dependencies + try { + val configurationName = configuration.name + val dependencies = configuration.dependencies - when (configurationName) { - "KoverEngineConfig" -> { - configurationTimeMetrics.put(BooleanMetrics.ENABLED_KOVER, true) - } - "kapt" -> { - configurationTimeMetrics.put(BooleanMetrics.ENABLED_KAPT, true) - for (dependency in dependencies) { - when (dependency.group) { - "com.google.dagger" -> configurationTimeMetrics.put(BooleanMetrics.ENABLED_DAGGER, true) - "com.android.databinding" -> configurationTimeMetrics.put(BooleanMetrics.ENABLED_DATABINDING, true) + when (configurationName) { + "KoverEngineConfig" -> { + configurationTimeMetrics.put(BooleanMetrics.ENABLED_KOVER, true) + } + "kapt" -> { + configurationTimeMetrics.put(BooleanMetrics.ENABLED_KAPT, true) + for (dependency in dependencies) { + when (dependency.group) { + "com.google.dagger" -> configurationTimeMetrics.put(BooleanMetrics.ENABLED_DAGGER, true) + "com.android.databinding" -> configurationTimeMetrics.put(BooleanMetrics.ENABLED_DATABINDING, true) + } } } + API -> { + configurationTimeMetrics.put(NumericalMetrics.CONFIGURATION_API_COUNT, 1) + reportLibrariesVersions(configurationTimeMetrics, dependencies) + } + IMPLEMENTATION -> { + configurationTimeMetrics.put(NumericalMetrics.CONFIGURATION_IMPLEMENTATION_COUNT, 1) + reportLibrariesVersions(configurationTimeMetrics, dependencies) + } + COMPILE -> { + configurationTimeMetrics.put(NumericalMetrics.CONFIGURATION_COMPILE_COUNT, 1) + reportLibrariesVersions(configurationTimeMetrics, dependencies) + } + RUNTIME -> { + configurationTimeMetrics.put(NumericalMetrics.CONFIGURATION_RUNTIME_COUNT, 1) + reportLibrariesVersions(configurationTimeMetrics, dependencies) + } } - API -> { - configurationTimeMetrics.put(NumericalMetrics.CONFIGURATION_API_COUNT, 1) - reportLibrariesVersions(configurationTimeMetrics, dependencies) - } - IMPLEMENTATION -> { - configurationTimeMetrics.put(NumericalMetrics.CONFIGURATION_IMPLEMENTATION_COUNT, 1) - reportLibrariesVersions(configurationTimeMetrics, dependencies) - } - COMPILE -> { - configurationTimeMetrics.put(NumericalMetrics.CONFIGURATION_COMPILE_COUNT, 1) - reportLibrariesVersions(configurationTimeMetrics, dependencies) - } - RUNTIME -> { - configurationTimeMetrics.put(NumericalMetrics.CONFIGURATION_RUNTIME_COUNT, 1) - reportLibrariesVersions(configurationTimeMetrics, dependencies) - } + } catch (e: Throwable) { + // log? } } val taskNames = project.tasks.names