@@ -231,44 +231,60 @@ abstract class BuildMetricsService : BuildService<BuildMetricsService.Parameters
231
231
}
232
232
233
233
private fun subscribeForTaskEvents (project : Project , buildMetricServiceProvider : Provider <BuildMetricsService >) {
234
- // BuildScanExtension cant be parameter nor BuildService's field
235
- val buildScanExtension = project.rootProject.extensions.findByName( " buildScan " )
236
- val buildScan = buildScanExtension?. let { BuildScanExtensionHolder (it) }
237
- val buildMetricService = buildMetricServiceProvider.get()
238
- val buildScanReportSettings = buildMetricService.parameters.reportingSettings.orNull?.buildScanReportSettings
234
+ val buildScanHolder = initBuildScanExtensionHolder(project, buildMetricServiceProvider)
235
+ if (buildScanHolder != null ) {
236
+ subscribeForTaskEventsForBuildScan(project, buildMetricServiceProvider, buildScanHolder)
237
+ }
238
+
239
239
val gradle80withBuildScanReport =
240
- GradleVersion .current().baseVersion == GradleVersion .version(" 8.0" ) && buildScanReportSettings != null && buildScan != null
240
+ GradleVersion .current().baseVersion == GradleVersion .version(" 8.0" ) && buildScanHolder != null
241
241
242
242
if (! gradle80withBuildScanReport) {
243
243
BuildEventsListenerRegistryHolder .getInstance(project).listenerRegistry.onTaskCompletion(buildMetricServiceProvider)
244
244
}
245
+ }
245
246
247
+ private fun initBuildScanExtensionHolder (
248
+ project : Project ,
249
+ buildMetricServiceProvider : Provider <BuildMetricsService >,
250
+ ): BuildScanExtensionHolder ? {
251
+ val buildScanReportSettings = buildMetricServiceProvider.get().parameters.reportingSettings.orNull?.buildScanReportSettings
246
252
if (buildScanReportSettings != null ) {
247
- buildScan?.also { buildScanHolder ->
248
- when {
249
- GradleVersion .current().baseVersion < GradleVersion .version(" 8.0" ) -> {
250
- buildScanHolder.buildScan.buildFinished {
251
- buildMetricServiceProvider.map {it.addBuildScanReport(buildScan)}.get()
253
+ // BuildScanExtension cant be parameter nor BuildService's field
254
+ val buildScanExtension = project.rootProject.extensions.findByName(" buildScan" )
255
+ return buildScanExtension?.let { BuildScanExtensionHolder (it) }
256
+ }
257
+ return null
258
+ }
259
+
260
+ private fun subscribeForTaskEventsForBuildScan (
261
+ project : Project ,
262
+ buildMetricServiceProvider : Provider <BuildMetricsService >,
263
+ buildScanHolder : BuildScanExtensionHolder
264
+ ) {
265
+ when {
266
+ GradleVersion .current().baseVersion < GradleVersion .version(" 8.0" ) -> {
267
+ buildScanHolder.buildScan.buildFinished {
268
+ buildMetricServiceProvider.map { it.addBuildScanReport(buildScanHolder) }.get()
269
+ }
270
+ }
271
+ GradleVersion .current().baseVersion < GradleVersion .version(" 8.1" ) -> {
272
+ val buildMetricService = buildMetricServiceProvider.get()
273
+ buildMetricService.buildReportService.initBuildScanTags(buildScanHolder, buildMetricService.parameters.label.orNull)
274
+ BuildEventsListenerRegistryHolder .getInstance(project).listenerRegistry.onTaskCompletion(project.provider {
275
+ OperationCompletionListener { event ->
276
+ if (event is TaskFinishEvent ) {
277
+ val buildOperation = buildMetricService.updateBuildOperationRecord(event)
278
+ val buildParameters = buildMetricService.parameters.toBuildReportParameters()
279
+ val buildReportService = buildMetricServiceProvider.map { it.buildReportService }.get()
280
+ buildReportService.addBuildScanReport(event, buildOperation, buildParameters, buildScanHolder)
281
+ buildReportService.onFinish(event, buildOperation, buildParameters)
252
282
}
253
283
}
254
- GradleVersion .current().baseVersion < GradleVersion .version(" 8.1" ) -> {
255
- buildMetricService.buildReportService.initBuildScanTags(buildScan, buildMetricService.parameters.label.orNull)
256
- BuildEventsListenerRegistryHolder .getInstance(project).listenerRegistry.onTaskCompletion(project.provider {
257
- OperationCompletionListener { event ->
258
- if (event is TaskFinishEvent ) {
259
- val buildOperation = buildMetricService.updateBuildOperationRecord(event)
260
- val buildParameters = buildMetricService.parameters.toBuildReportParameters()
261
- val buildReportService = buildMetricServiceProvider.map { it.buildReportService }.get()
262
- buildReportService.addBuildScanReport(event, buildOperation, buildParameters, buildScanHolder)
263
- buildReportService.onFinish(event, buildOperation, buildParameters)
264
- }
265
- }
266
-
267
- })
268
- }
269
- else -> {}// do nothing, BuildScanFlowAction is used
270
- }
284
+
285
+ })
271
286
}
287
+ else -> {}// do nothing, BuildScanFlowAction is used
272
288
}
273
289
}
274
290
0 commit comments