Gradle, js: rename objects to avoid clashing with moowork nodejs plugin

#KT-31834 Fixed
This commit is contained in:
Sergey Rostov
2019-06-06 10:27:57 +03:00
parent b5515a31eb
commit 45d4a9d67c
6 changed files with 26 additions and 23 deletions
@@ -4,7 +4,7 @@ import org.gradle.api.Plugin
import org.gradle.api.Project import org.gradle.api.Project
import org.gradle.api.plugins.BasePlugin import org.gradle.api.plugins.BasePlugin
import org.gradle.api.tasks.Delete import org.gradle.api.tasks.Delete
import org.jetbrains.kotlin.gradle.targets.js.nodejs.NodeJsRootExtension.Companion.NODE_JS import org.jetbrains.kotlin.gradle.targets.js.nodejs.NodeJsRootExtension.Companion.EXTENSION_NAME
import org.jetbrains.kotlin.gradle.targets.js.npm.NpmResolveTask import org.jetbrains.kotlin.gradle.targets.js.npm.NpmResolveTask
open class NodeJsPlugin : Plugin<Project> { open class NodeJsPlugin : Plugin<Project> {
@@ -13,31 +13,37 @@ open class NodeJsPlugin : Plugin<Project> {
"NodeJsPlugin can be applied only to root project" "NodeJsPlugin can be applied only to root project"
} }
this.extensions.create(NODE_JS, NodeJsRootExtension::class.java, this) this.extensions.create(EXTENSION_NAME, NodeJsRootExtension::class.java, this)
val setupTask = tasks.create(NodeJsSetupTask.NAME, NodeJsSetupTask::class.java) val setupTask = tasks.create(NodeJsSetupTask.NAME, NodeJsSetupTask::class.java) {
val npmResolveTask = tasks.create(NpmResolveTask.NAME, NpmResolveTask::class.java) it.group = TASKS_GROUP_NAME
npmResolveTask.outputs.upToDateWhen { false } it.description = "Download and install a local node/npm version"
}
npmResolveTask.dependsOn(setupTask) tasks.create(NpmResolveTask.NAME, NpmResolveTask::class.java) {
it.dependsOn(setupTask)
it.outputs.upToDateWhen { false }
it.group = TASKS_GROUP_NAME
it.description = "Find, download and link NPM dependencies and projects"
}
setupCleanNodeModulesTask(project) setupCleanNodeModulesTask(project)
allprojects { allprojects {
if (it != project) { if (it != project) {
it.extensions.create(NODE_JS, NodeJsExtension::class.java, this) it.extensions.create(EXTENSION_NAME, NodeJsExtension::class.java, this)
} }
} }
} }
private fun setupCleanNodeModulesTask(project: Project) { private fun setupCleanNodeModulesTask(project: Project) {
project.tasks.create("cleanNodeModules", Delete::class.java) { project.tasks.create("cleanKotlinNodeModules", Delete::class.java) {
it.description = "Deletes nodeJs projects created during build" it.description = "Deletes nodeJs projects created during build"
it.group = BasePlugin.BUILD_GROUP it.group = BasePlugin.BUILD_GROUP
it.delete.add(project.nodeJs.root.rootPackageDir) it.delete.add(project.nodeJs.root.rootPackageDir)
} }
project.tasks.create("cleanGradleNodeModules", Delete::class.java) { project.tasks.create("cleanKotlinGradleNodeModules", Delete::class.java) {
it.description = "Deletes node modules imported from gradle external modules" it.description = "Deletes node modules imported from gradle external modules"
it.group = BasePlugin.BUILD_GROUP it.group = BasePlugin.BUILD_GROUP
it.delete.add(project.nodeJs.root.nodeModulesGradleCacheDir) it.delete.add(project.nodeJs.root.nodeModulesGradleCacheDir)
@@ -45,10 +51,12 @@ open class NodeJsPlugin : Plugin<Project> {
} }
companion object { companion object {
const val TASKS_GROUP_NAME: String = "nodeJs"
fun apply(project: Project): NodeJsExtension { fun apply(project: Project): NodeJsExtension {
val rootProject = project.rootProject val rootProject = project.rootProject
rootProject.plugins.apply(NodeJsPlugin::class.java) rootProject.plugins.apply(NodeJsPlugin::class.java)
return rootProject.extensions.getByName(NODE_JS) as NodeJsExtension return rootProject.extensions.getByName(EXTENSION_NAME) as NodeJsExtension
} }
} }
} }
@@ -76,7 +76,7 @@ open class NodeJsRootExtension(project: Project) : NodeJsExtension(project) {
} }
companion object { companion object {
const val NODE_JS: String = "nodeJs" const val EXTENSION_NAME: String = "kotlinNodeJs"
operator fun get(project: Project) = NodeJsPlugin.apply(project.rootProject) as NodeJsRootExtension operator fun get(project: Project) = NodeJsPlugin.apply(project.rootProject) as NodeJsRootExtension
} }
@@ -14,11 +14,6 @@ open class NodeJsSetupTask : DefaultTask() {
private val settings = project.nodeJs.root private val settings = project.nodeJs.root
private val env by lazy { settings.environment } private val env by lazy { settings.environment }
init {
group = NodeJsRootExtension.NODE_JS
description = "Download and install a local node/npm version."
}
val ivyDependency: String val ivyDependency: String
@Input get() = env.ivyDependency @Input get() = env.ivyDependency
@@ -93,6 +88,6 @@ open class NodeJsSetupTask : DefaultTask() {
} }
companion object { companion object {
const val NAME: String = "nodeJsSetup" const val NAME: String = "kotlinNodeJsSetup"
} }
} }
@@ -15,6 +15,6 @@ open class NpmResolveTask : AbstractTask() {
} }
companion object { companion object {
const val NAME = "npmResolve" const val NAME = "kotlinNpmResolve"
} }
} }
@@ -44,7 +44,7 @@ open class YarnRootExtension(val project: Project) {
) )
companion object { companion object {
const val YARN: String = "yarn" const val YARN: String = "kotlinYarn"
operator fun get(project: Project): YarnRootExtension { operator fun get(project: Project): YarnRootExtension {
val rootProject = project.rootProject val rootProject = project.rootProject
@@ -9,7 +9,7 @@ import de.undercouch.gradle.tasks.download.DownloadAction
import org.gradle.api.DefaultTask import org.gradle.api.DefaultTask
import org.gradle.api.tasks.Input import org.gradle.api.tasks.Input
import org.gradle.api.tasks.OutputDirectory import org.gradle.api.tasks.OutputDirectory
import org.jetbrains.kotlin.gradle.targets.js.nodejs.NodeJsRootExtension import org.jetbrains.kotlin.gradle.targets.js.nodejs.NodeJsPlugin
import java.io.File import java.io.File
import javax.xml.ws.Action import javax.xml.ws.Action
@@ -26,8 +26,8 @@ open class YarnSetupTask : DefaultTask() {
@OutputDirectory get() = env.home @OutputDirectory get() = env.home
init { init {
group = NodeJsRootExtension.NODE_JS group = NodeJsPlugin.TASKS_GROUP_NAME
description = "Download and install a local yarn version." description = "Download and install a local yarn version"
onlyIf { onlyIf {
!settings.installationDir.exists() !settings.installationDir.exists()
@@ -62,6 +62,6 @@ open class YarnSetupTask : DefaultTask() {
} }
companion object { companion object {
const val NAME: String = "yarnSetup" const val NAME: String = "kotlinYarnSetup"
} }
} }