From c6251fdad7ee693a51ae59ec95b3ca64426aaca3 Mon Sep 17 00:00:00 2001 From: Dmitry Jemerov Date: Thu, 26 Jan 2017 13:18:21 +0100 Subject: [PATCH] Add JS variant of Gradle framework support provider #KT-13632 Fixed --- idea/src/META-INF/gradle.xml | 1 + ...> GradleKotlinFrameworkSupportProvider.kt} | 32 +++++++++++++++---- .../KotlinWithGradleConfigurator.kt | 5 +-- 3 files changed, 30 insertions(+), 8 deletions(-) rename idea/src/org/jetbrains/kotlin/idea/configuration/{GradleKotlinJavaFrameworkSupportProvider.kt => GradleKotlinFrameworkSupportProvider.kt} (68%) diff --git a/idea/src/META-INF/gradle.xml b/idea/src/META-INF/gradle.xml index 25c3ed02c85..c8e5a584701 100644 --- a/idea/src/META-INF/gradle.xml +++ b/idea/src/META-INF/gradle.xml @@ -1,6 +1,7 @@ + diff --git a/idea/src/org/jetbrains/kotlin/idea/configuration/GradleKotlinJavaFrameworkSupportProvider.kt b/idea/src/org/jetbrains/kotlin/idea/configuration/GradleKotlinFrameworkSupportProvider.kt similarity index 68% rename from idea/src/org/jetbrains/kotlin/idea/configuration/GradleKotlinJavaFrameworkSupportProvider.kt rename to idea/src/org/jetbrains/kotlin/idea/configuration/GradleKotlinFrameworkSupportProvider.kt index 2f1fbc32132..5dbe2055f85 100644 --- a/idea/src/org/jetbrains/kotlin/idea/configuration/GradleKotlinJavaFrameworkSupportProvider.kt +++ b/idea/src/org/jetbrains/kotlin/idea/configuration/GradleKotlinFrameworkSupportProvider.kt @@ -22,18 +22,20 @@ import com.intellij.openapi.module.Module import com.intellij.openapi.roots.ModifiableModelsProvider import com.intellij.openapi.roots.ModifiableRootModel import org.jetbrains.kotlin.idea.KotlinIcons +import org.jetbrains.kotlin.idea.versions.MAVEN_JS_STDLIB_ID import org.jetbrains.kotlin.idea.versions.bundledRuntimeVersion import org.jetbrains.plugins.gradle.frameworkSupport.BuildScriptDataBuilder import org.jetbrains.plugins.gradle.frameworkSupport.GradleFrameworkSupportProvider import javax.swing.Icon -class GradleKotlinJavaFrameworkSupportProvider : GradleFrameworkSupportProvider() { - override fun getFrameworkType(): FrameworkTypeEx = object : FrameworkTypeEx("KOTLIN") { +abstract class GradleKotlinFrameworkSupportProvider(val frameworkTypeId: String, + val displayName: String) : GradleFrameworkSupportProvider() { + override fun getFrameworkType(): FrameworkTypeEx = object : FrameworkTypeEx(frameworkTypeId) { override fun getIcon(): Icon = KotlinIcons.SMALL_LOGO - override fun getPresentableName(): String = "Kotlin (Java)" + override fun getPresentableName(): String = displayName - override fun createProvider(): FrameworkSupportInModuleProvider = this@GradleKotlinJavaFrameworkSupportProvider + override fun createProvider(): FrameworkSupportInModuleProvider = this@GradleKotlinFrameworkSupportProvider } override fun addSupport(module: Module, @@ -67,13 +69,31 @@ class GradleKotlinJavaFrameworkSupportProvider : GradleFrameworkSupportProvider( } buildScriptData - .addPluginDefinition(KotlinGradleModuleConfigurator.APPLY_KOTLIN) + .addPluginDefinition(getPluginDefinition()) .addBuildscriptRepositoriesDefinition("mavenCentral()") .addRepositoriesDefinition("mavenCentral()") .addBuildscriptPropertyDefinition("ext.kotlin_version = '$kotlinVersion'") - .addDependencyNotation(KotlinWithGradleConfigurator.getRuntimeLibrary(rootModel.sdk)) + .addDependencyNotation(getRuntimeLibrary(rootModel)) .addBuildscriptDependencyNotation(KotlinWithGradleConfigurator.CLASSPATH) } + + protected abstract fun getRuntimeLibrary(rootModel: ModifiableRootModel): String + + protected abstract fun getPluginDefinition(): String +} + +class GradleKotlinJavaFrameworkSupportProvider : GradleKotlinFrameworkSupportProvider("KOTLIN", "Kotlin (Java)") { + override fun getPluginDefinition() = KotlinGradleModuleConfigurator.APPLY_KOTLIN + + override fun getRuntimeLibrary(rootModel: ModifiableRootModel) = + KotlinWithGradleConfigurator.getRuntimeLibrary(rootModel.sdk) +} + +class GradleKotlinJSFrameworkSupportProvider : GradleKotlinFrameworkSupportProvider("KOTLIN_JS", "Kotlin (JavaScript)") { + override fun getPluginDefinition() = "apply plugin: 'kotlin2js'" + + override fun getRuntimeLibrary(rootModel: ModifiableRootModel) = + KotlinWithGradleConfigurator.getDependencySnippet(MAVEN_JS_STDLIB_ID) } diff --git a/idea/src/org/jetbrains/kotlin/idea/configuration/KotlinWithGradleConfigurator.kt b/idea/src/org/jetbrains/kotlin/idea/configuration/KotlinWithGradleConfigurator.kt index fd10a7f42f1..1f7598864cf 100644 --- a/idea/src/org/jetbrains/kotlin/idea/configuration/KotlinWithGradleConfigurator.kt +++ b/idea/src/org/jetbrains/kotlin/idea/configuration/KotlinWithGradleConfigurator.kt @@ -407,8 +407,9 @@ abstract class KotlinWithGradleConfigurator : KotlinProjectConfigurator { } fun getRuntimeLibrary(sdk: Sdk?): String { - val artifactId = getStdlibArtifactId(sdk) - return "compile \"org.jetbrains.kotlin:$artifactId:\$kotlin_version\"" + return getDependencySnippet(getStdlibArtifactId(sdk)) } + + fun getDependencySnippet(artifactId: String) = "compile \"org.jetbrains.kotlin:$artifactId:\$kotlin_version\"" } }