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