[Gradle] Migrate warning about not chosen JS-environment
This commit is contained in:
+2
-1
@@ -103,7 +103,8 @@ internal interface KotlinGradleProjectChecker {
|
||||
AndroidPluginWithoutAndroidTargetChecker,
|
||||
NoKotlinTargetsDeclaredChecker,
|
||||
DisabledCinteropCommonizationInHmppProjectChecker,
|
||||
DisabledNativeTargetsChecker
|
||||
DisabledNativeTargetsChecker,
|
||||
JsEnvironmentChecker
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
+15
@@ -297,4 +297,19 @@ object KotlinToolingDiagnostics {
|
||||
severity
|
||||
)
|
||||
}
|
||||
|
||||
object JsEnvironmentNotChosenExplicitly : ToolingDiagnosticFactory(WARNING) {
|
||||
operator fun invoke(availableEnvironments: List<String>) = build(
|
||||
"""
|
||||
|Please choose a JavaScript environment to build distributions and run tests.
|
||||
|Not choosing any of them will be an error in the future releases.
|
||||
|kotlin {
|
||||
| js {
|
||||
| // To build distributions for and run tests on browser or Node.js use one or both of:
|
||||
| ${availableEnvironments.joinToString(separator = "\n")}
|
||||
| }
|
||||
|}
|
||||
""".trimMargin()
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
+45
@@ -0,0 +1,45 @@
|
||||
/*
|
||||
* Copyright 2010-2023 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
||||
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
||||
*/
|
||||
|
||||
package org.jetbrains.kotlin.gradle.plugin.diagnostics.checkers
|
||||
|
||||
import org.jetbrains.kotlin.gradle.dsl.KotlinMultiplatformExtension
|
||||
import org.jetbrains.kotlin.gradle.plugin.KotlinPlatformType
|
||||
import org.jetbrains.kotlin.gradle.plugin.KotlinTarget
|
||||
import org.jetbrains.kotlin.gradle.plugin.diagnostics.KotlinGradleProjectChecker
|
||||
import org.jetbrains.kotlin.gradle.plugin.diagnostics.KotlinGradleProjectCheckerContext
|
||||
import org.jetbrains.kotlin.gradle.plugin.diagnostics.KotlinToolingDiagnostics
|
||||
import org.jetbrains.kotlin.gradle.plugin.diagnostics.KotlinToolingDiagnosticsCollector
|
||||
import org.jetbrains.kotlin.gradle.targets.js.dsl.KotlinJsSubTargetContainerDsl
|
||||
import org.jetbrains.kotlin.gradle.targets.js.dsl.KotlinWasmSubTargetContainerDsl
|
||||
|
||||
internal object JsEnvironmentChecker : KotlinGradleProjectChecker {
|
||||
override suspend fun KotlinGradleProjectCheckerContext.runChecks(collector: KotlinToolingDiagnosticsCollector) {
|
||||
val misconfiguredTarget = multiplatformExtension?.findMisconfiguredTargetIfAny() ?: return
|
||||
|
||||
collector.reportOncePerGradleBuild(
|
||||
project,
|
||||
KotlinToolingDiagnostics.JsEnvironmentNotChosenExplicitly(
|
||||
availableEnvironments = listOfNotNull(
|
||||
"browser()",
|
||||
"nodejs()",
|
||||
"d8".takeIf { misconfiguredTarget.platformType == KotlinPlatformType.wasm }
|
||||
)
|
||||
)
|
||||
)
|
||||
}
|
||||
|
||||
private suspend fun KotlinMultiplatformExtension.findMisconfiguredTargetIfAny(): KotlinTarget? {
|
||||
return awaitTargets()
|
||||
.filter { it.platformType == KotlinPlatformType.js || it.platformType == KotlinPlatformType.wasm }
|
||||
.find {
|
||||
it.browserNotConfigured() && it.nodejsNotConfigured() && it.d8NotConfigured()
|
||||
}
|
||||
}
|
||||
|
||||
private fun KotlinTarget.browserNotConfigured() = (this as? KotlinJsSubTargetContainerDsl)?.isBrowserConfigured == false
|
||||
private fun KotlinTarget.nodejsNotConfigured() = (this as? KotlinJsSubTargetContainerDsl)?.isNodejsConfigured == false
|
||||
private fun KotlinTarget.d8NotConfigured() = (this as? KotlinWasmSubTargetContainerDsl)?.isD8Configured == false
|
||||
}
|
||||
-15
@@ -57,21 +57,6 @@ open class KotlinJsTargetPreset(
|
||||
this.isMpp = this@KotlinJsTargetPreset.isMpp
|
||||
|
||||
project.runProjectConfigurationHealthCheckWhenEvaluated {
|
||||
if (!isBrowserConfigured && !isNodejsConfigured) {
|
||||
project.logger.warn(
|
||||
"""
|
||||
Please choose a JavaScript environment to build distributions and run tests.
|
||||
Not choosing any of them will be an error in the future releases.
|
||||
kotlin {
|
||||
js {
|
||||
// To build distributions for and run tests on browser or Node.js use one or both of:
|
||||
browser()
|
||||
nodejs()
|
||||
}
|
||||
}
|
||||
""".trimIndent()
|
||||
)
|
||||
}
|
||||
val buildStatsService = KotlinBuildStatsService.getInstance()
|
||||
when {
|
||||
isBrowserConfigured && isNodejsConfigured -> buildStatsService?.report(StringMetrics.JS_TARGET_MODE, "both")
|
||||
|
||||
-15
@@ -33,21 +33,6 @@ open class KotlinJsIrTargetPreset(
|
||||
this.isMpp = this@KotlinJsIrTargetPreset.isMpp
|
||||
if (!mixedMode) {
|
||||
project.runProjectConfigurationHealthCheckWhenEvaluated {
|
||||
if (!isBrowserConfigured && !isNodejsConfigured) {
|
||||
project.logger.warn(
|
||||
"""
|
||||
Please choose a JavaScript environment to build distributions and run tests.
|
||||
Not choosing any of them will be an error in the future releases.
|
||||
kotlin {
|
||||
js {
|
||||
// To build distributions for and run tests on browser or Node.js use one or both of:
|
||||
browser()
|
||||
nodejs()
|
||||
}
|
||||
}
|
||||
""".trimIndent()
|
||||
)
|
||||
}
|
||||
val buildStatsService = KotlinBuildStatsService.getInstance()
|
||||
when {
|
||||
isBrowserConfigured && isNodejsConfigured -> buildStatsService?.report(StringMetrics.JS_TARGET_MODE, "both")
|
||||
|
||||
+1
-19
@@ -27,24 +27,6 @@ class KotlinWasmTargetPreset(
|
||||
val irTarget = project.objects.newInstance(KotlinJsIrTarget::class.java, project, KotlinPlatformType.wasm, false)
|
||||
irTarget.isMpp = true
|
||||
|
||||
project.runProjectConfigurationHealthCheckWhenEvaluated {
|
||||
if (!irTarget.isBrowserConfigured && !irTarget.isNodejsConfigured && !irTarget.isD8Configured) {
|
||||
project.logger.warn(
|
||||
"""
|
||||
Please choose a JavaScript environment to run tests.
|
||||
kotlin {
|
||||
wasm {
|
||||
// To build distributions for and run tests on browser, Node.js or d8 use one:
|
||||
browser()
|
||||
nodejs()
|
||||
d8()
|
||||
}
|
||||
}
|
||||
""".trimIndent()
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
return irTarget
|
||||
}
|
||||
|
||||
@@ -61,4 +43,4 @@ class KotlinWasmTargetPreset(
|
||||
companion object {
|
||||
private const val WASM_PRESET_NAME = "wasm"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user