[Gradle, JS] No additional checks of setup tasks

This commit is contained in:
Ilya Goncharov
2021-07-01 14:35:21 +03:00
committed by TeamCityServer
parent 54d47de008
commit eb73527b9f
9 changed files with 29 additions and 22 deletions
@@ -15,8 +15,8 @@ import org.jetbrains.kotlin.gradle.targets.js.NpmVersions
import org.jetbrains.kotlin.gradle.targets.js.npm.KotlinNpmResolutionManager
import org.jetbrains.kotlin.gradle.targets.js.npm.NpmApi
import org.jetbrains.kotlin.gradle.targets.js.npm.resolver.PACKAGE_JSON_UMBRELLA_TASK_NAME
import org.jetbrains.kotlin.gradle.targets.js.npm.tasks.KotlinNpmInstallTask
import org.jetbrains.kotlin.gradle.targets.js.npm.tasks.KotlinNpmCachesSetup
import org.jetbrains.kotlin.gradle.targets.js.npm.tasks.KotlinNpmInstallTask
import org.jetbrains.kotlin.gradle.targets.js.npm.tasks.RootPackageJsonTask
import org.jetbrains.kotlin.gradle.targets.js.yarn.Yarn
import org.jetbrains.kotlin.gradle.tasks.internal.CleanableStore
@@ -116,10 +116,10 @@ open class NodeJsRootExtension(@Transient val rootProject: Project) : Configurat
}
internal fun executeSetup() {
val nodeJsEnv = requireConfigured()
if (download) {
if (!nodeJsEnv.nodeBinDir.isDirectory) {
nodeJsSetupTaskProvider.get().exec()
val nodeJsSetupTask = nodeJsSetupTaskProvider.get()
nodeJsSetupTask.actions.forEach {
it.execute(nodeJsSetupTask)
}
}
}
@@ -67,9 +67,8 @@ abstract class NodeJsSetupTask : DefaultTask() {
}
init {
@Suppress("LeakingThis")
onlyIf {
shouldDownload && !File(env.nodeExecutable).isFile
shouldDownload
}
}
@@ -27,7 +27,8 @@ interface NpmApi {
rootProjectVersion: String,
logger: Logger,
subProjects: Collection<KotlinCompilationNpmResolution>,
resolutions: Map<String, String>
resolutions: Map<String, String>,
forceFullResolve: Boolean
)
fun resolveRootProject(
@@ -200,7 +200,9 @@ internal class KotlinRootNpmResolver internal constructor(
logger,
allNpmPackages,
yarn.resolutions
.associate { it.path to it.toVersionString() })
.associate { it.path to it.toVersionString() },
forceFullResolve
)
return Installation(
projectResolutions
@@ -33,7 +33,8 @@ class Yarn : NpmApi {
rootProjectVersion: String,
logger: Logger,
subProjects: Collection<KotlinCompilationNpmResolution>,
resolutions: Map<String, String>
resolutions: Map<String, String>,
forceFullResolve: Boolean
) = yarnWorkspaces
.prepareRootProject(
rootProject,
@@ -42,7 +43,8 @@ class Yarn : NpmApi {
rootProjectVersion,
logger,
subProjects,
resolutions
resolutions,
forceFullResolve
)
override fun resolveRootProject(
@@ -30,7 +30,7 @@ open class YarnPlugin : Plugin<Project> {
val yarnRootExtension = this.extensions.create(YarnRootExtension.YARN, YarnRootExtension::class.java, this)
val nodeJs = NodeJsRootPlugin.apply(this)
registerTask<YarnSetupTask>(YarnSetupTask.NAME) {
val setupTask = registerTask<YarnSetupTask>(YarnSetupTask.NAME) {
it.dependsOn(nodeJs.nodeJsSetupTaskProvider)
it.configuration = provider {
@@ -50,6 +50,7 @@ open class YarnPlugin : Plugin<Project> {
tasks.named(KotlinNpmInstallTask.NAME).configure {
it.dependsOn(rootPackageJson)
it.dependsOn(setupTask)
}
tasks.register("yarn" + CleanDataTask.NAME_SUFFIX, CleanDataTask::class.java) {
@@ -34,8 +34,10 @@ open class YarnRootExtension(
var downloadBaseUrl by Property("https://github.com/yarnpkg/yarn/releases/download")
var version by Property("1.22.10")
val yarnSetupTask: YarnSetupTask
get() = project.tasks.getByName(YarnSetupTask.NAME) as YarnSetupTask
val yarnSetupTaskProvider: TaskProvider<YarnSetupTask>
get() = project.tasks
.withType(YarnSetupTask::class.java)
.named(YarnSetupTask.NAME)
val rootPackageJsonTaskProvider: TaskProvider<RootPackageJsonTask>
get() = project.tasks
@@ -85,9 +87,9 @@ open class YarnRootExtension(
internal fun executeSetup() {
NodeJsRootPlugin.apply(project).executeSetup()
if (!finalizeConfiguration().home.isDirectory) {
yarnSetupTask.setup()
val yarnSetupTask = yarnSetupTaskProvider.get()
yarnSetupTask.actions.forEach {
it.execute(yarnSetupTask)
}
}
@@ -72,7 +72,7 @@ open class YarnSetupTask : DefaultTask() {
@TaskAction
fun setup() {
logger.kotlinInfo("Using node distribution from '$yarnDist'")
logger.kotlinInfo("Using yarn distribution from '$yarnDist'")
extract(yarnDist, destination.parentFile) // parent because archive contains name already
}
@@ -5,12 +5,10 @@
package org.jetbrains.kotlin.gradle.targets.js.yarn
import com.google.gson.Gson
import org.gradle.api.Project
import org.gradle.api.logging.Logger
import org.gradle.internal.service.ServiceRegistry
import org.jetbrains.kotlin.gradle.targets.js.nodejs.NodeJsRootExtension
import org.jetbrains.kotlin.gradle.targets.js.nodejs.NodeJsRootPlugin
import org.jetbrains.kotlin.gradle.targets.js.npm.NpmApi
import org.jetbrains.kotlin.gradle.targets.js.npm.NpmProject
import org.jetbrains.kotlin.gradle.targets.js.npm.PackageJson
@@ -33,10 +31,12 @@ class YarnWorkspaces : YarnBasics() {
rootProjectVersion: String,
logger: Logger,
subProjects: Collection<KotlinCompilationNpmResolution>,
resolutions: Map<String, String>
resolutions: Map<String, String>,
forceFullResolve: Boolean
) {
// check(rootProject == rootProject.rootProject)
rootProject?.let { setup(it) }
if (forceFullResolve) {
rootProject?.let { setup(it) }
}
return prepareRootPackageJson(
nodeJs,
rootProjectName,