From 9d465236ee127723811a0fbfad7f3dc8985bf2ce Mon Sep 17 00:00:00 2001 From: "nataliya.valtman" Date: Wed, 13 Jul 2022 12:27:34 +0200 Subject: [PATCH] Add SINGLE_FILE statistic option --- .../kotlin/gradle/plugin/KotlinProperties.kt | 4 ++++ .../gradle/report/BuildMetricsReporterService.kt | 9 +++------ .../kotlin/gradle/report/BuildReportType.kt | 3 ++- .../kotlin/gradle/report/ReportingSettings.kt | 4 ++-- .../kotlin/gradle/report/configureReporing.kt | 15 +++++++++++---- 5 files changed, 22 insertions(+), 13 deletions(-) diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinProperties.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinProperties.kt index 85e64863a11..2ffdd698349 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinProperties.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinProperties.kt @@ -49,9 +49,13 @@ internal class PropertiesProvider private constructor(private val project: Proje } } + @Deprecated(message = "Please use kotlin.build.report.output=SINGLE_FILE and kotlin.build.report.single_file ") val singleBuildMetricsFile: File? get() = property("kotlin.internal.single.build.metrics.file")?.let { File(it) } + val buildReportSingleFile: File? + get() = property("kotlin.build.report.single_file")?.let { File(it) } + @Deprecated(message = "Please use kotlin.build.report.output instead ") val buildReportEnabled: Boolean get() { diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/report/BuildMetricsReporterService.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/report/BuildMetricsReporterService.kt index cc95e1a4714..587aba19817 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/report/BuildMetricsReporterService.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/report/BuildMetricsReporterService.kt @@ -134,10 +134,7 @@ abstract class BuildMetricsReporterService : BuildService buildDataProcessors.add(PlainTextBuildReportWriterDataProcessor(fileReportSettings, project.rootProject.name)) } - reportingSettings.metricsOutputFile?.let { metricsOutputFile -> - buildDataProcessors.add(MetricsWriter(metricsOutputFile.absoluteFile)) + reportingSettings.singleOutputFile?.let { singleOutputFile -> + buildDataProcessors.add(MetricsWriter(singleOutputFile.absoluteFile)) } it.parameters.startParameters = getStartParameters(project) diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/report/BuildReportType.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/report/BuildReportType.kt index 22bc6a93690..ad42f20a8c3 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/report/BuildReportType.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/report/BuildReportType.kt @@ -10,7 +10,8 @@ import java.io.Serializable enum class BuildReportType : Serializable { FILE, HTTP, - BUILD_SCAN; + BUILD_SCAN, + SINGLE_FILE; companion object { const val serialVersionUID: Long = 0 diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/report/ReportingSettings.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/report/ReportingSettings.kt index 97fda8ef75a..6c4445d5d2d 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/report/ReportingSettings.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/report/ReportingSettings.kt @@ -9,12 +9,12 @@ import java.io.File import java.io.Serializable data class ReportingSettings( - val metricsOutputFile: File? = null, val buildReportOutputs: List = emptyList(), val buildReportMode: BuildReportMode = BuildReportMode.NONE, val buildReportLabel: String? = null, val fileReportSettings: FileReportSettings? = null, - val httpReportSettings: HttpReportSettings? = null + val httpReportSettings: HttpReportSettings? = null, + val singleOutputFile: File? = null ) : Serializable { companion object { const val serialVersionUID: Long = 1 diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/report/configureReporing.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/report/configureReporing.kt index b5e9a83cb51..543cd1f87b1 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/report/configureReporing.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/report/configureReporing.kt @@ -13,7 +13,7 @@ internal fun reportingSettings(rootProject: Project): ReportingSettings { val buildReportOutputTypes = properties.buildReportOutputs.map { BuildReportType.values().firstOrNull { brt -> brt.name == it.trim().toUpperCase() } ?: throw IllegalStateException("Unknown output type: $it") - } + }.toMutableList() //temporary solution. support old property val buildReportMode = when { buildReportOutputTypes.isEmpty() -> BuildReportMode.NONE @@ -36,14 +36,21 @@ internal fun reportingSettings(rootProject: Project): ReportingSettings { } else { null } - val metricsOutputFile = properties.singleBuildMetricsFile + + //temporary solution. support old property + val oldSingleBuildMetric = properties.singleBuildMetricsFile?.also { buildReportOutputTypes.add(BuildReportType.SINGLE_FILE) } + + val singleOutputFile = if (buildReportOutputTypes.contains(BuildReportType.SINGLE_FILE)) { + properties.buildReportSingleFile ?: oldSingleBuildMetric + } else null + return ReportingSettings( - metricsOutputFile = metricsOutputFile, buildReportMode = buildReportMode, buildReportLabel = properties.buildReportLabel, fileReportSettings = fileReportSettings, httpReportSettings = httpReportSettings, - buildReportOutputs = buildReportOutputTypes + buildReportOutputs = buildReportOutputTypes, + singleOutputFile = singleOutputFile, ) }