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?
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() {
@@ -134,10 +134,7 @@ abstract class BuildMetricsReporterService : BuildService<BuildMetricsReporterSe
}
val reportingSettings = reportingSettings(project.rootProject)
if (reportingSettings.buildReportOutputs.isEmpty()
&& reportingSettings.fileReportSettings == null
&& reportingSettings.metricsOutputFile == null
) {
if (reportingSettings.buildReportOutputs.isEmpty()) {
return null
}
@@ -146,8 +143,8 @@ abstract class BuildMetricsReporterService : BuildService<BuildMetricsReporterSe
reportingSettings.fileReportSettings?.let { fileReportSettings ->
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)
@@ -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
@@ -9,12 +9,12 @@ import java.io.File
import java.io.Serializable
data class ReportingSettings(
val metricsOutputFile: File? = null,
val buildReportOutputs: List<BuildReportType> = 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
@@ -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,
)
}