Gradle, GradleNodeModulesCache: use new ProcessedFilesCache API

This commit is contained in:
Sergey Rostov
2019-07-03 16:05:08 +03:00
parent fd2d99e205
commit 24f08a614e
2 changed files with 19 additions and 16 deletions
@@ -39,7 +39,7 @@ internal class GradleNodeModuleBuilder(
}
}
fun rebuild(): PackageJson? {
fun rebuild(): File? {
if (files.isEmpty()) return null
val packageJson = srcPackageJsonFile?.reader()?.use {
@@ -79,7 +79,7 @@ fun makeNodeModule(
container: File,
packageJson: PackageJson,
files: (File) -> Unit
): PackageJson {
): File {
val dir = importedPackageDir(container, packageJson.name, packageJson.version)
if (dir.exists()) dir.deleteRecursively()
@@ -98,8 +98,10 @@ fun makeNodeModule(
gson.toJson(packageJson, it)
}
return packageJson
return dir
}
fun importedPackageDir(container: File, name: String, version: String): File =
container.resolve(name).resolve(version)
container.resolve(name).resolve(version)
fun GradleNodeModule(dir: File) = GradleNodeModule(dir.parentFile.name, dir.name, dir)
@@ -10,6 +10,7 @@ import org.gradle.api.artifacts.ResolvedArtifact
import org.gradle.api.artifacts.ResolvedDependency
import org.jetbrains.kotlin.gradle.internal.ProcessedFilesCache
import org.jetbrains.kotlin.gradle.targets.js.nodejs.NodeJsRootExtension
import java.io.File
/**
* Cache for storing already created [GradleNodeModule]s
@@ -27,19 +28,19 @@ internal class GradleNodeModulesCache(val nodeJs: NodeJsRootExtension) : AutoClo
fun get(
dependency: ResolvedDependency,
artifact: ResolvedArtifact
): GradleNodeModule? {
val key = cache.getOrCompute(artifact.file) {
val module = GradleNodeModuleBuilder(project, dependency, listOf(artifact), this)
module.visitArtifacts()
module.rebuild()?.let {
it.name + ":" + it.version
}
}
): GradleNodeModule? = cache.getOrCompute(artifact.file) {
buildImportedPackage(dependency, artifact)
}?.let {
GradleNodeModule(it)
}
return if (key != null) {
val (name, version) = key.split(":")
GradleNodeModule(name, version, importedPackageDir(dir, name, version))
} else null
private fun buildImportedPackage(
dependency: ResolvedDependency,
artifact: ResolvedArtifact
): File? {
val module = GradleNodeModuleBuilder(project, dependency, listOf(artifact), this)
module.visitArtifacts()
return module.rebuild()
}
@Synchronized