Add JS variant of Gradle framework support provider

#KT-13632 Fixed
This commit is contained in:
Dmitry Jemerov
2017-01-26 13:18:21 +01:00
parent e76cd15e5b
commit c6251fdad7
3 changed files with 30 additions and 8 deletions
+1
View File
@@ -1,6 +1,7 @@
<idea-plugin> <idea-plugin>
<extensions defaultExtensionNs="org.jetbrains.plugins.gradle"> <extensions defaultExtensionNs="org.jetbrains.plugins.gradle">
<frameworkSupport implementation="org.jetbrains.kotlin.idea.configuration.GradleKotlinJavaFrameworkSupportProvider"/> <frameworkSupport implementation="org.jetbrains.kotlin.idea.configuration.GradleKotlinJavaFrameworkSupportProvider"/>
<frameworkSupport implementation="org.jetbrains.kotlin.idea.configuration.GradleKotlinJSFrameworkSupportProvider"/>
<pluginDescriptions implementation="org.jetbrains.kotlin.idea.configuration.KotlinGradlePluginDescription"/> <pluginDescriptions implementation="org.jetbrains.kotlin.idea.configuration.KotlinGradlePluginDescription"/>
<projectResolve implementation="org.jetbrains.kotlin.idea.configuration.KotlinGradleProjectResolverExtension"/> <projectResolve implementation="org.jetbrains.kotlin.idea.configuration.KotlinGradleProjectResolverExtension"/>
</extensions> </extensions>
@@ -22,18 +22,20 @@ import com.intellij.openapi.module.Module
import com.intellij.openapi.roots.ModifiableModelsProvider import com.intellij.openapi.roots.ModifiableModelsProvider
import com.intellij.openapi.roots.ModifiableRootModel import com.intellij.openapi.roots.ModifiableRootModel
import org.jetbrains.kotlin.idea.KotlinIcons 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.kotlin.idea.versions.bundledRuntimeVersion
import org.jetbrains.plugins.gradle.frameworkSupport.BuildScriptDataBuilder import org.jetbrains.plugins.gradle.frameworkSupport.BuildScriptDataBuilder
import org.jetbrains.plugins.gradle.frameworkSupport.GradleFrameworkSupportProvider import org.jetbrains.plugins.gradle.frameworkSupport.GradleFrameworkSupportProvider
import javax.swing.Icon import javax.swing.Icon
class GradleKotlinJavaFrameworkSupportProvider : GradleFrameworkSupportProvider() { abstract class GradleKotlinFrameworkSupportProvider(val frameworkTypeId: String,
override fun getFrameworkType(): FrameworkTypeEx = object : FrameworkTypeEx("KOTLIN") { val displayName: String) : GradleFrameworkSupportProvider() {
override fun getFrameworkType(): FrameworkTypeEx = object : FrameworkTypeEx(frameworkTypeId) {
override fun getIcon(): Icon = KotlinIcons.SMALL_LOGO 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, override fun addSupport(module: Module,
@@ -67,13 +69,31 @@ class GradleKotlinJavaFrameworkSupportProvider : GradleFrameworkSupportProvider(
} }
buildScriptData buildScriptData
.addPluginDefinition(KotlinGradleModuleConfigurator.APPLY_KOTLIN) .addPluginDefinition(getPluginDefinition())
.addBuildscriptRepositoriesDefinition("mavenCentral()") .addBuildscriptRepositoriesDefinition("mavenCentral()")
.addRepositoriesDefinition("mavenCentral()") .addRepositoriesDefinition("mavenCentral()")
.addBuildscriptPropertyDefinition("ext.kotlin_version = '$kotlinVersion'") .addBuildscriptPropertyDefinition("ext.kotlin_version = '$kotlinVersion'")
.addDependencyNotation(KotlinWithGradleConfigurator.getRuntimeLibrary(rootModel.sdk)) .addDependencyNotation(getRuntimeLibrary(rootModel))
.addBuildscriptDependencyNotation(KotlinWithGradleConfigurator.CLASSPATH) .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)
} }
@@ -407,8 +407,9 @@ abstract class KotlinWithGradleConfigurator : KotlinProjectConfigurator {
} }
fun getRuntimeLibrary(sdk: Sdk?): String { fun getRuntimeLibrary(sdk: Sdk?): String {
val artifactId = getStdlibArtifactId(sdk) return getDependencySnippet(getStdlibArtifactId(sdk))
return "compile \"org.jetbrains.kotlin:$artifactId:\$kotlin_version\""
} }
fun getDependencySnippet(artifactId: String) = "compile \"org.jetbrains.kotlin:$artifactId:\$kotlin_version\""
} }
} }