58 lines
2.0 KiB
Kotlin
Raw Normal View History

2020-09-30 20:43:02 +03:00
package ru.mipt.npm.gradle
import org.gradle.api.Plugin
import org.gradle.api.Project
2021-02-23 16:53:15 +03:00
import org.gradle.kotlin.dsl.apply
import org.gradle.kotlin.dsl.configure
import org.gradle.kotlin.dsl.findPlugin
import org.gradle.kotlin.dsl.invoke
2020-09-30 20:43:02 +03:00
import org.jetbrains.kotlin.gradle.dsl.KotlinMultiplatformExtension
/**
* Create a separate target for node
*/
public class KScienceNodePlugin : Plugin<Project> {
override fun apply(target: Project): Unit = target.run {
2020-09-30 20:43:02 +03:00
//Apply multiplatform plugin is not applied, apply it
2020-11-25 14:26:08 +03:00
if (plugins.findPlugin("org.jetbrains.kotlin.multiplatform") == null) {
2020-11-25 12:16:09 +03:00
logger.info("Kotlin multiplatform plugin is not resolved. Adding it automatically")
apply("org.jetbrains.kotlin.multiplatform")
2020-11-25 12:16:09 +03:00
}
2020-11-25 12:16:09 +03:00
if (plugins.findPlugin(KScienceCommonPlugin::class) == null) {
logger.info("KScience plugin is not resolved. Adding it automatically")
apply<KScienceCommonPlugin>()
2020-09-30 20:43:02 +03:00
}
configure<KotlinMultiplatformExtension> {
js(name = "node", compiler = IR) {
nodejs()
}
2021-02-23 16:53:15 +03:00
2020-09-30 20:43:02 +03:00
sourceSets {
2021-02-23 16:53:15 +03:00
val commonMain = findByName("commonMain")!!
val commonTest = findByName("commonTest")!!
2021-02-03 20:13:22 +03:00
2021-02-23 16:53:15 +03:00
val jsCommonMain = create("jsCommonMain").apply {
2020-09-30 20:43:02 +03:00
dependsOn(commonMain)
2021-02-03 20:13:22 +03:00
}
2021-02-23 16:53:15 +03:00
val jsCommonTest = create("jsCommonTest").apply {
2021-02-03 20:13:22 +03:00
dependsOn(commonTest)
}
2021-02-23 16:53:15 +03:00
findByName("jsMain")?.dependsOn(jsCommonMain)
findByName("jsTest")?.dependsOn(jsCommonTest)
2021-02-03 20:13:22 +03:00
2021-02-23 16:53:15 +03:00
findByName("nodeMain")?.apply {
2021-02-03 20:13:22 +03:00
dependsOn(jsCommonMain)
2021-02-23 16:53:15 +03:00
dependencies {
2020-09-30 20:43:02 +03:00
api("org.jetbrains.kotlinx:kotlinx-nodejs:${KScienceVersions.kotlinxNodeVersion}")
}
}
2021-02-23 16:53:15 +03:00
findByName("nodeTest")?.dependsOn(jsCommonMain)
2020-09-30 20:43:02 +03:00
}
}
}
}