[Gradle, JS] RootPackageJson task with up-to-date status

This commit is contained in:
Ilya Goncharov
2021-04-09 12:13:42 +03:00
committed by TeamCityServer
parent f182a1c750
commit 1cc5a9493c
6 changed files with 21 additions and 8 deletions
@@ -26,6 +26,8 @@ internal abstract class AbstractNodeModulesCache : AutoCloseable, BuildService<A
const val STATE_FILE_NAME = ".visited"
}
abstract val type: String
lateinit var fileHasher: FileHasher
private val cache by lazy {
@@ -33,7 +35,7 @@ internal abstract class AbstractNodeModulesCache : AutoCloseable, BuildService<A
fileHasher,
parameters.rootProjectDir.get().asFile,
parameters.cacheDir.get().asFile,
STATE_FILE_NAME,
"$STATE_FILE_NAME-$type",
"9"
)
}
@@ -13,6 +13,9 @@ import java.io.File
* Cache for storing already created [GradleNodeModule]s
*/
internal abstract class CompositeNodeModulesCache : AbstractNodeModulesCache() {
override val type: String
get() = "composite"
override fun buildImportedPackage(
name: String,
version: String,
@@ -21,6 +21,9 @@ internal abstract class GradleNodeModulesCache : AbstractNodeModulesCache() {
@Transient
lateinit var fs: FileSystemOperationsCompat
override val type: String
get() = "gradle"
// TODO: replace by injected service org.gradle.api.file.ArchiveOperations once min supported Gradle is 6.6
@Transient
lateinit var archiveOperations: ArchiveOperationsCompat
@@ -126,7 +126,7 @@ internal class KotlinRootNpmResolver internal constructor(
val plugins
get() = plugins_ ?: resolverStateHolder.get().parameters.plugins.get()
val projectResolvers
private val projectResolvers
get() = projectResolvers_ ?: configurationCacheProjectResolvers
val yarn by lazy {
@@ -6,8 +6,7 @@
package org.jetbrains.kotlin.gradle.targets.js.npm.tasks
import org.gradle.api.DefaultTask
import org.gradle.api.tasks.OutputFile
import org.gradle.api.tasks.TaskAction
import org.gradle.api.tasks.*
import org.jetbrains.kotlin.gradle.targets.js.nodejs.NodeJsRootPlugin
import org.jetbrains.kotlin.gradle.targets.js.npm.NpmProject
import java.io.File
@@ -16,10 +15,6 @@ open class RootPackageJsonTask : DefaultTask() {
init {
check(project == project.rootProject)
outputs.upToDateWhen {
false
}
onlyIf {
resolutionManager.isConfiguringState()
}
@@ -34,6 +29,12 @@ open class RootPackageJsonTask : DefaultTask() {
nodeJs.rootPackageDir.resolve(NpmProject.PACKAGE_JSON)
}
@get:PathSensitive(PathSensitivity.RELATIVE)
@get:InputFiles
val packageJsonFiles: Collection<File> by lazy {
resolutionManager.packageJsonFiles
}
@TaskAction
fun resolve() {
resolutionManager.prepare(logger)
@@ -7,7 +7,11 @@ package org.jetbrains.kotlin.gradle.targets.js.yarn
import org.gradle.api.Plugin
import org.gradle.api.Project
import org.gradle.api.attributes.Usage
import org.gradle.api.plugins.BasePlugin
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinUsages
import org.jetbrains.kotlin.gradle.plugin.mpp.disambiguateName
import org.jetbrains.kotlin.gradle.plugin.usesPlatformOf
import org.jetbrains.kotlin.gradle.targets.js.MultiplePluginDeclarationDetector
import org.jetbrains.kotlin.gradle.targets.js.nodejs.NodeJsRootPlugin
import org.jetbrains.kotlin.gradle.targets.js.npm.tasks.KotlinNpmInstallTask