Add SINGLE_FILE statistic option

This commit is contained in:
nataliya.valtman
2022-07-13 12:27:34 +02:00
committed by Space
parent 2313dbeb9e
commit 9d465236ee
5 changed files with 22 additions and 13 deletions
@@ -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? val singleBuildMetricsFile: File?
get() = property("kotlin.internal.single.build.metrics.file")?.let { File(it) } 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 ") @Deprecated(message = "Please use kotlin.build.report.output instead ")
val buildReportEnabled: Boolean val buildReportEnabled: Boolean
get() { get() {
@@ -134,10 +134,7 @@ abstract class BuildMetricsReporterService : BuildService<BuildMetricsReporterSe
} }
val reportingSettings = reportingSettings(project.rootProject) val reportingSettings = reportingSettings(project.rootProject)
if (reportingSettings.buildReportOutputs.isEmpty() if (reportingSettings.buildReportOutputs.isEmpty()) {
&& reportingSettings.fileReportSettings == null
&& reportingSettings.metricsOutputFile == null
) {
return null return null
} }
@@ -146,8 +143,8 @@ abstract class BuildMetricsReporterService : BuildService<BuildMetricsReporterSe
reportingSettings.fileReportSettings?.let { fileReportSettings -> reportingSettings.fileReportSettings?.let { fileReportSettings ->
buildDataProcessors.add(PlainTextBuildReportWriterDataProcessor(fileReportSettings, project.rootProject.name)) buildDataProcessors.add(PlainTextBuildReportWriterDataProcessor(fileReportSettings, project.rootProject.name))
} }
reportingSettings.metricsOutputFile?.let { metricsOutputFile -> reportingSettings.singleOutputFile?.let { singleOutputFile ->
buildDataProcessors.add(MetricsWriter(metricsOutputFile.absoluteFile)) buildDataProcessors.add(MetricsWriter(singleOutputFile.absoluteFile))
} }
it.parameters.startParameters = getStartParameters(project) it.parameters.startParameters = getStartParameters(project)
@@ -10,7 +10,8 @@ import java.io.Serializable
enum class BuildReportType : Serializable { enum class BuildReportType : Serializable {
FILE, FILE,
HTTP, HTTP,
BUILD_SCAN; BUILD_SCAN,
SINGLE_FILE;
companion object { companion object {
const val serialVersionUID: Long = 0 const val serialVersionUID: Long = 0
@@ -9,12 +9,12 @@ import java.io.File
import java.io.Serializable import java.io.Serializable
data class ReportingSettings( data class ReportingSettings(
val metricsOutputFile: File? = null,
val buildReportOutputs: List<BuildReportType> = emptyList(), val buildReportOutputs: List<BuildReportType> = emptyList(),
val buildReportMode: BuildReportMode = BuildReportMode.NONE, val buildReportMode: BuildReportMode = BuildReportMode.NONE,
val buildReportLabel: String? = null, val buildReportLabel: String? = null,
val fileReportSettings: FileReportSettings? = null, val fileReportSettings: FileReportSettings? = null,
val httpReportSettings: HttpReportSettings? = null val httpReportSettings: HttpReportSettings? = null,
val singleOutputFile: File? = null
) : Serializable { ) : Serializable {
companion object { companion object {
const val serialVersionUID: Long = 1 const val serialVersionUID: Long = 1
@@ -13,7 +13,7 @@ internal fun reportingSettings(rootProject: Project): ReportingSettings {
val buildReportOutputTypes = properties.buildReportOutputs.map { val buildReportOutputTypes = properties.buildReportOutputs.map {
BuildReportType.values().firstOrNull { brt -> brt.name == it.trim().toUpperCase() } BuildReportType.values().firstOrNull { brt -> brt.name == it.trim().toUpperCase() }
?: throw IllegalStateException("Unknown output type: $it") ?: throw IllegalStateException("Unknown output type: $it")
} }.toMutableList() //temporary solution. support old property
val buildReportMode = val buildReportMode =
when { when {
buildReportOutputTypes.isEmpty() -> BuildReportMode.NONE buildReportOutputTypes.isEmpty() -> BuildReportMode.NONE
@@ -36,14 +36,21 @@ internal fun reportingSettings(rootProject: Project): ReportingSettings {
} else { } else {
null 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( return ReportingSettings(
metricsOutputFile = metricsOutputFile,
buildReportMode = buildReportMode, buildReportMode = buildReportMode,
buildReportLabel = properties.buildReportLabel, buildReportLabel = properties.buildReportLabel,
fileReportSettings = fileReportSettings, fileReportSettings = fileReportSettings,
httpReportSettings = httpReportSettings, httpReportSettings = httpReportSettings,
buildReportOutputs = buildReportOutputTypes buildReportOutputs = buildReportOutputTypes,
singleOutputFile = singleOutputFile,
) )
} }