[Gradle][KT-53342] MultiplatformLayoutV1PromoteV2Checker: Show only single warning per build

This commit is contained in:
sebastian.sellmair
2022-08-08 14:22:04 +02:00
committed by Space
parent 9b8fbea0dc
commit 97ecf43b77
2 changed files with 10 additions and 5 deletions
@@ -11,6 +11,7 @@ import org.jetbrains.kotlin.gradle.plugin.PropertiesProvider.PropertyNames
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinAndroidTarget
import org.jetbrains.kotlin.gradle.plugin.sources.android.KotlinAndroidSourceSetLayout
import org.jetbrains.kotlin.gradle.plugin.sources.android.multiplatformAndroidSourceSetLayoutV2
import org.jetbrains.kotlin.gradle.utils.SingleWarningPerBuild
/**
* Promotes MultiplatformAndroidSourceSetLayoutV2 when requirements are met
@@ -22,8 +23,9 @@ internal object MultiplatformLayoutV1PromoteV2Checker : KotlinAndroidSourceSetLa
if (target.project.kotlinPropertiesProvider.ignoreMppAndroidSourceSetLayoutVersion) return
runCatching {
if (MultiplatformLayoutV2AgpRequirementChecker.isAgpRequirementMet()) {
logger.warn(
"""
SingleWarningPerBuild.show(
target.project, logger,
"""
w: ${layout.name} is deprecated. Use ${multiplatformAndroidSourceSetLayoutV2.name} instead.
To enable ${multiplatformAndroidSourceSetLayoutV2.name}: put the following in your gradle.properties:
${PropertyNames.KOTLIN_MPP_ANDROID_SOURCE_SET_LAYOUT_VERSION}=2
@@ -6,7 +6,8 @@
package org.jetbrains.kotlin.gradle.utils
import org.gradle.api.Project
import java.util.WeakHashMap
import org.gradle.api.logging.Logger
import java.util.*
internal abstract class SingleAction {
private val performedActions = WeakHashMap<Project, MutableSet<String>>()
@@ -32,8 +33,10 @@ internal object SingleActionPerProject : SingleAction() {
internal object SingleWarningPerBuild {
private const val ACTION_ID_SHOW_WARNING = "show-warning:"
fun show(project: Project, warningText: String) = SingleActionPerBuild.run(project, ACTION_ID_SHOW_WARNING + warningText) {
project.logger.warn(warningText)
fun show(project: Project, warningText: String) = show(project, project.logger, warningText)
fun show(project: Project, logger: Logger, warningText: String) = SingleActionPerBuild.run(project, ACTION_ID_SHOW_WARNING + warningText) {
logger.warn(warningText)
}
fun deprecation(project: Project, context: String, target: String, replacement: String?) {