[Gradle] Migrate warning about not chosen JS-environment
This commit is contained in:
+2
-1
@@ -103,7 +103,8 @@ internal interface KotlinGradleProjectChecker {
|
|||||||
AndroidPluginWithoutAndroidTargetChecker,
|
AndroidPluginWithoutAndroidTargetChecker,
|
||||||
NoKotlinTargetsDeclaredChecker,
|
NoKotlinTargetsDeclaredChecker,
|
||||||
DisabledCinteropCommonizationInHmppProjectChecker,
|
DisabledCinteropCommonizationInHmppProjectChecker,
|
||||||
DisabledNativeTargetsChecker
|
DisabledNativeTargetsChecker,
|
||||||
|
JsEnvironmentChecker
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+15
@@ -297,4 +297,19 @@ object KotlinToolingDiagnostics {
|
|||||||
severity
|
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
|
this.isMpp = this@KotlinJsTargetPreset.isMpp
|
||||||
|
|
||||||
project.runProjectConfigurationHealthCheckWhenEvaluated {
|
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()
|
val buildStatsService = KotlinBuildStatsService.getInstance()
|
||||||
when {
|
when {
|
||||||
isBrowserConfigured && isNodejsConfigured -> buildStatsService?.report(StringMetrics.JS_TARGET_MODE, "both")
|
isBrowserConfigured && isNodejsConfigured -> buildStatsService?.report(StringMetrics.JS_TARGET_MODE, "both")
|
||||||
|
|||||||
-15
@@ -33,21 +33,6 @@ open class KotlinJsIrTargetPreset(
|
|||||||
this.isMpp = this@KotlinJsIrTargetPreset.isMpp
|
this.isMpp = this@KotlinJsIrTargetPreset.isMpp
|
||||||
if (!mixedMode) {
|
if (!mixedMode) {
|
||||||
project.runProjectConfigurationHealthCheckWhenEvaluated {
|
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()
|
val buildStatsService = KotlinBuildStatsService.getInstance()
|
||||||
when {
|
when {
|
||||||
isBrowserConfigured && isNodejsConfigured -> buildStatsService?.report(StringMetrics.JS_TARGET_MODE, "both")
|
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)
|
val irTarget = project.objects.newInstance(KotlinJsIrTarget::class.java, project, KotlinPlatformType.wasm, false)
|
||||||
irTarget.isMpp = true
|
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
|
return irTarget
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -61,4 +43,4 @@ class KotlinWasmTargetPreset(
|
|||||||
companion object {
|
companion object {
|
||||||
private const val WASM_PRESET_NAME = "wasm"
|
private const val WASM_PRESET_NAME = "wasm"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user