Skip to content

Commit f499070

Browse files
committed
IDE, wizards: update Gradle Kotlin/JS support
Split Kotlin/JS configuration for browser and nodejs. Add corresponding Kotlin/JS sub targets DSL calling.
1 parent 560f34b commit f499070

File tree

6 files changed

+83
-18
lines changed

6 files changed

+83
-18
lines changed

idea/idea-gradle/src/org/jetbrains/kotlin/idea/configuration/GradleKotlinFrameworkSupportProvider.kt

Lines changed: 38 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,7 @@ abstract class GradleKotlinFrameworkSupportProvider(
100100
}
101101

102102
buildScriptData.addPluginDefinitionInPluginsGroup(
103-
getPluginExpression() + if (specifyPluginVersionIfNeeded) " version '$kotlinVersion'" else ""
103+
getPluginExpression() + if (specifyPluginVersionIfNeeded) " version '$kotlinVersion'" else ""
104104
)
105105
} else {
106106
if (additionalRepository != null) {
@@ -147,7 +147,7 @@ abstract class GradleKotlinFrameworkSupportProvider(
147147
KotlinFUSLogger.log(FUSEventGroups.NPWizards, this.javaClass.simpleName)
148148
}
149149

150-
protected open fun updateSettingsScript(settingsBuilder: SettingsScriptBuilder, specifyPluginVersionIfNeeded: Boolean) { }
150+
protected open fun updateSettingsScript(settingsBuilder: SettingsScriptBuilder, specifyPluginVersionIfNeeded: Boolean) {}
151151

152152
protected abstract fun getDependencies(sdk: Sdk?): List<String>
153153
protected open fun getTestDependencies(): List<String> = listOf()
@@ -187,21 +187,51 @@ open class GradleKotlinJavaFrameworkSupportProvider(
187187
override fun getDescription() = "A Kotlin library or application targeting the JVM"
188188
}
189189

190-
open class GradleKotlinJSFrameworkSupportProvider(
191-
frameworkTypeId: String = "KOTLIN_JS",
192-
displayName: String = "Kotlin/JS"
190+
abstract class GradleKotlinJSFrameworkSupportProvider(
191+
frameworkTypeId: String,
192+
displayName: String
193193
) : GradleKotlinFrameworkSupportProvider(frameworkTypeId, displayName, KotlinIcons.JS) {
194+
abstract val jsSubTargetName: String
195+
196+
override fun addSupport(
197+
buildScriptData: BuildScriptDataBuilder,
198+
module: Module,
199+
sdk: Sdk?,
200+
specifyPluginVersionIfNeeded: Boolean,
201+
explicitPluginVersion: String?
202+
) {
203+
super.addSupport(buildScriptData, module, sdk, specifyPluginVersionIfNeeded, explicitPluginVersion)
204+
205+
buildScriptData.addOther("kotlin.target.$jsSubTargetName { }")
206+
}
194207

195208
override fun getPluginId() = KotlinJsGradleModuleConfigurator.KOTLIN_JS
196209
override fun getPluginExpression() = "id 'org.jetbrains.kotlin.js'"
197-
198210
override fun getDependencies(sdk: Sdk?) = listOf(MAVEN_JS_STDLIB_ID)
199-
200211
override fun getTestDependencies() = listOf(MAVEN_JS_TEST_ID)
201-
202212
override fun getDescription() = "A Kotlin library or application targeting JavaScript"
203213
}
204214

215+
open class GradleKotlinJSBrowserFrameworkSupportProvider(
216+
frameworkTypeId: String = "KOTLIN_JS_BROWSER",
217+
displayName: String = "Kotlin/JS for browser"
218+
) : GradleKotlinJSFrameworkSupportProvider(frameworkTypeId, displayName) {
219+
override val jsSubTargetName: String
220+
get() = "browser"
221+
222+
override fun getDescription() = "A Kotlin library or application targeting JavaScript for browser"
223+
}
224+
225+
open class GradleKotlinJSNodeFrameworkSupportProvider(
226+
frameworkTypeId: String = "KOTLIN_JS_NODE",
227+
displayName: String = "Kotlin/JS for Node.js"
228+
) : GradleKotlinJSFrameworkSupportProvider(frameworkTypeId, displayName) {
229+
override val jsSubTargetName: String
230+
get() = "nodejs"
231+
232+
override fun getDescription() = "A Kotlin library or application targeting JavaScript for Node.js"
233+
}
234+
205235
class GradleKotlinMPPFrameworkSupportProvider : GradleKotlinFrameworkSupportProvider(
206236
"KOTLIN_MPP", "Kotlin (Multiplatform - Experimental)", KotlinIcons.MPP
207237
) {

idea/idea-gradle/src/org/jetbrains/kotlin/idea/configuration/KotlinDslGradleKotlinFrameworkSupportProvider.kt

Lines changed: 29 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -144,12 +144,39 @@ class KotlinDslGradleKotlinJavaFrameworkSupportProvider :
144144
}
145145
}
146146

147-
class KotlinDslGradleKotlinJSFrameworkSupportProvider :
148-
KotlinDslGradleKotlinFrameworkSupportProvider("KOTLIN_JS", "Kotlin/JS", KotlinIcons.JS) {
147+
abstract class AbstractKotlinDslGradleKotlinJSFrameworkSupportProvider(
148+
frameworkTypeId: String,
149+
displayName: String
150+
) : KotlinDslGradleKotlinFrameworkSupportProvider(frameworkTypeId, displayName, KotlinIcons.JS) {
151+
abstract val jsSubTargetName: String
152+
153+
override fun addSupport(
154+
projectId: ProjectId,
155+
module: Module,
156+
rootModel: ModifiableRootModel,
157+
modifiableModelsProvider: ModifiableModelsProvider,
158+
buildScriptData: BuildScriptDataBuilder
159+
) {
160+
super.addSupport(projectId, module, rootModel, modifiableModelsProvider, buildScriptData)
161+
162+
buildScriptData.addOther("kotlin.target.$jsSubTargetName { }")
163+
}
149164

150165
override fun getOldSyntaxPluginDefinition(): String = "plugin(\"${KotlinJsGradleModuleConfigurator.KOTLIN_JS}\")"
151166
override fun getPluginDefinition(): String = "id(\"org.jetbrains.kotlin.js\")"
152167

153168
override fun getRuntimeLibrary(rootModel: ModifiableRootModel, version: String?) =
154169
"implementation(${getKotlinModuleDependencySnippet(MAVEN_JS_STDLIB_ID.removePrefix("kotlin-"), version)})"
155170
}
171+
172+
class KotlinDslGradleKotlinJSBrowserFrameworkSupportProvider :
173+
AbstractKotlinDslGradleKotlinJSFrameworkSupportProvider("KOTLIN_JS_BROWSER", "Kotlin/JS for browser") {
174+
override val jsSubTargetName: String
175+
get() = "browser"
176+
}
177+
178+
class KotlinDslGradleKotlinJSNodeFrameworkSupportProvider :
179+
AbstractKotlinDslGradleKotlinJSFrameworkSupportProvider("KOTLIN_JS_NODE", "Kotlin/JS for Node.js") {
180+
override val jsSubTargetName: String
181+
get() = "Node.js"
182+
}

idea/resources/META-INF/gradle-java.xml

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,11 @@
11
<idea-plugin>
22
<extensions defaultExtensionNs="org.jetbrains.plugins.gradle">
33
<frameworkSupport implementation="org.jetbrains.kotlin.idea.configuration.GradleKotlinJavaFrameworkSupportProvider"/>
4-
<frameworkSupport implementation="org.jetbrains.kotlin.idea.configuration.GradleKotlinJSFrameworkSupportProvider"/>
4+
<frameworkSupport implementation="org.jetbrains.kotlin.idea.configuration.GradleKotlinJSBrowserFrameworkSupportProvider"/>
5+
<frameworkSupport implementation="org.jetbrains.kotlin.idea.configuration.GradleKotlinJSNodeFrameworkSupportProvider"/>
56
<kotlinDslFrameworkSupport implementation="org.jetbrains.kotlin.idea.configuration.KotlinDslGradleKotlinJavaFrameworkSupportProvider"/>
6-
<kotlinDslFrameworkSupport implementation="org.jetbrains.kotlin.idea.configuration.KotlinDslGradleKotlinJSFrameworkSupportProvider"/>
7+
<kotlinDslFrameworkSupport implementation="org.jetbrains.kotlin.idea.configuration.KotlinDslGradleKotlinJSBrowserFrameworkSupportProvider"/>
8+
<kotlinDslFrameworkSupport implementation="org.jetbrains.kotlin.idea.configuration.KotlinDslGradleKotlinJSNodeFrameworkSupportProvider"/>
79
<pluginDescriptions implementation="org.jetbrains.kotlin.idea.configuration.KotlinGradlePluginDescription"/>
810
<projectResolve implementation="org.jetbrains.kotlin.idea.configuration.KotlinGradleProjectResolverExtension" order="first"/>
911
<projectResolve implementation="org.jetbrains.kotlin.kapt.idea.KaptProjectResolverExtension" order="last"/>

idea/resources/META-INF/gradle-java.xml.183

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,11 @@
11
<idea-plugin>
22
<extensions defaultExtensionNs="org.jetbrains.plugins.gradle">
33
<frameworkSupport implementation="org.jetbrains.kotlin.idea.configuration.GradleKotlinJavaFrameworkSupportProvider"/>
4-
<frameworkSupport implementation="org.jetbrains.kotlin.idea.configuration.GradleKotlinJSFrameworkSupportProvider"/>
4+
<frameworkSupport implementation="org.jetbrains.kotlin.idea.configuration.GradleKotlinJSBrowserFrameworkSupportProvider"/>
5+
<frameworkSupport implementation="org.jetbrains.kotlin.idea.configuration.GradleKotlinJSNodeFrameworkSupportProvider"/>
56
<kotlinDslFrameworkSupport implementation="org.jetbrains.kotlin.idea.configuration.KotlinDslGradleKotlinJavaFrameworkSupportProvider"/>
6-
<kotlinDslFrameworkSupport implementation="org.jetbrains.kotlin.idea.configuration.KotlinDslGradleKotlinJSFrameworkSupportProvider"/>
7+
<kotlinDslFrameworkSupport implementation="org.jetbrains.kotlin.idea.configuration.KotlinDslGradleKotlinJSBrowserFrameworkSupportProvider"/>
8+
<kotlinDslFrameworkSupport implementation="org.jetbrains.kotlin.idea.configuration.KotlinDslGradleKotlinJSNodeFrameworkSupportProvider"/>
79
<pluginDescriptions implementation="org.jetbrains.kotlin.idea.configuration.KotlinGradlePluginDescription"/>
810
<projectResolve implementation="org.jetbrains.kotlin.idea.configuration.KotlinGradleProjectResolverExtension" order="first"/>
911
<projectResolve implementation="org.jetbrains.kotlin.kapt.idea.KaptProjectResolverExtension" order="last"/>

idea/resources/META-INF/gradle-java.xml.as33

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,11 @@
11
<idea-plugin>
22
<extensions defaultExtensionNs="org.jetbrains.plugins.gradle">
33
<frameworkSupport implementation="org.jetbrains.kotlin.idea.configuration.GradleKotlinJavaFrameworkSupportProvider"/>
4-
<frameworkSupport implementation="org.jetbrains.kotlin.idea.configuration.GradleKotlinJSFrameworkSupportProvider"/>
4+
<frameworkSupport implementation="org.jetbrains.kotlin.idea.configuration.GradleKotlinJSBrowserFrameworkSupportProvider"/>
5+
<frameworkSupport implementation="org.jetbrains.kotlin.idea.configuration.GradleKotlinJSNodeFrameworkSupportProvider"/>
56
<kotlinDslFrameworkSupport implementation="org.jetbrains.kotlin.idea.configuration.KotlinDslGradleKotlinJavaFrameworkSupportProvider"/>
6-
<kotlinDslFrameworkSupport implementation="org.jetbrains.kotlin.idea.configuration.KotlinDslGradleKotlinJSFrameworkSupportProvider"/>
7+
<kotlinDslFrameworkSupport implementation="org.jetbrains.kotlin.idea.configuration.KotlinDslGradleKotlinJSBrowserFrameworkSupportProvider"/>
8+
<kotlinDslFrameworkSupport implementation="org.jetbrains.kotlin.idea.configuration.KotlinDslGradleKotlinJSNodeFrameworkSupportProvider"/>
79
<pluginDescriptions implementation="org.jetbrains.kotlin.idea.configuration.KotlinGradlePluginDescription"/>
810
<projectResolve implementation="org.jetbrains.kotlin.idea.configuration.KotlinGradleProjectResolverExtension" order="first"/>
911
<projectResolve implementation="org.jetbrains.kotlin.kapt.idea.KaptProjectResolverExtension" order="last"/>

idea/resources/META-INF/gradle-java.xml.as34

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,11 @@
11
<idea-plugin>
22
<extensions defaultExtensionNs="org.jetbrains.plugins.gradle">
33
<frameworkSupport implementation="org.jetbrains.kotlin.idea.configuration.GradleKotlinJavaFrameworkSupportProvider"/>
4-
<frameworkSupport implementation="org.jetbrains.kotlin.idea.configuration.GradleKotlinJSFrameworkSupportProvider"/>
4+
<frameworkSupport implementation="org.jetbrains.kotlin.idea.configuration.GradleKotlinJSBrowserFrameworkSupportProvider"/>
5+
<frameworkSupport implementation="org.jetbrains.kotlin.idea.configuration.GradleKotlinJSNodeFrameworkSupportProvider"/>
56
<kotlinDslFrameworkSupport implementation="org.jetbrains.kotlin.idea.configuration.KotlinDslGradleKotlinJavaFrameworkSupportProvider"/>
6-
<kotlinDslFrameworkSupport implementation="org.jetbrains.kotlin.idea.configuration.KotlinDslGradleKotlinJSFrameworkSupportProvider"/>
7+
<kotlinDslFrameworkSupport implementation="org.jetbrains.kotlin.idea.configuration.KotlinDslGradleKotlinJSBrowserFrameworkSupportProvider"/>
8+
<kotlinDslFrameworkSupport implementation="org.jetbrains.kotlin.idea.configuration.KotlinDslGradleKotlinJSNodeFrameworkSupportProvider"/>
79
<pluginDescriptions implementation="org.jetbrains.kotlin.idea.configuration.KotlinGradlePluginDescription"/>
810
<projectResolve implementation="org.jetbrains.kotlin.idea.configuration.KotlinGradleProjectResolverExtension" order="first"/>
911
<projectResolve implementation="org.jetbrains.kotlin.kapt.idea.KaptProjectResolverExtension" order="last"/>

0 commit comments

Comments
 (0)