Add JS variant of Gradle framework support provider
#KT-13632 Fixed
This commit is contained in:
@@ -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>
|
||||||
|
|||||||
+26
-6
@@ -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\""
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user