Gradle, GradleNodeModulesCache: use new ProcessedFilesCache API
This commit is contained in:
+5
-3
@@ -39,7 +39,7 @@ internal class GradleNodeModuleBuilder(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fun rebuild(): PackageJson? {
|
fun rebuild(): File? {
|
||||||
if (files.isEmpty()) return null
|
if (files.isEmpty()) return null
|
||||||
|
|
||||||
val packageJson = srcPackageJsonFile?.reader()?.use {
|
val packageJson = srcPackageJsonFile?.reader()?.use {
|
||||||
@@ -79,7 +79,7 @@ fun makeNodeModule(
|
|||||||
container: File,
|
container: File,
|
||||||
packageJson: PackageJson,
|
packageJson: PackageJson,
|
||||||
files: (File) -> Unit
|
files: (File) -> Unit
|
||||||
): PackageJson {
|
): File {
|
||||||
val dir = importedPackageDir(container, packageJson.name, packageJson.version)
|
val dir = importedPackageDir(container, packageJson.name, packageJson.version)
|
||||||
|
|
||||||
if (dir.exists()) dir.deleteRecursively()
|
if (dir.exists()) dir.deleteRecursively()
|
||||||
@@ -98,8 +98,10 @@ fun makeNodeModule(
|
|||||||
gson.toJson(packageJson, it)
|
gson.toJson(packageJson, it)
|
||||||
}
|
}
|
||||||
|
|
||||||
return packageJson
|
return dir
|
||||||
}
|
}
|
||||||
|
|
||||||
fun importedPackageDir(container: File, name: String, version: String): File =
|
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)
|
||||||
+13
-12
@@ -10,6 +10,7 @@ import org.gradle.api.artifacts.ResolvedArtifact
|
|||||||
import org.gradle.api.artifacts.ResolvedDependency
|
import org.gradle.api.artifacts.ResolvedDependency
|
||||||
import org.jetbrains.kotlin.gradle.internal.ProcessedFilesCache
|
import org.jetbrains.kotlin.gradle.internal.ProcessedFilesCache
|
||||||
import org.jetbrains.kotlin.gradle.targets.js.nodejs.NodeJsRootExtension
|
import org.jetbrains.kotlin.gradle.targets.js.nodejs.NodeJsRootExtension
|
||||||
|
import java.io.File
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Cache for storing already created [GradleNodeModule]s
|
* Cache for storing already created [GradleNodeModule]s
|
||||||
@@ -27,19 +28,19 @@ internal class GradleNodeModulesCache(val nodeJs: NodeJsRootExtension) : AutoClo
|
|||||||
fun get(
|
fun get(
|
||||||
dependency: ResolvedDependency,
|
dependency: ResolvedDependency,
|
||||||
artifact: ResolvedArtifact
|
artifact: ResolvedArtifact
|
||||||
): GradleNodeModule? {
|
): GradleNodeModule? = cache.getOrCompute(artifact.file) {
|
||||||
val key = cache.getOrCompute(artifact.file) {
|
buildImportedPackage(dependency, artifact)
|
||||||
val module = GradleNodeModuleBuilder(project, dependency, listOf(artifact), this)
|
}?.let {
|
||||||
module.visitArtifacts()
|
GradleNodeModule(it)
|
||||||
module.rebuild()?.let {
|
}
|
||||||
it.name + ":" + it.version
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return if (key != null) {
|
private fun buildImportedPackage(
|
||||||
val (name, version) = key.split(":")
|
dependency: ResolvedDependency,
|
||||||
GradleNodeModule(name, version, importedPackageDir(dir, name, version))
|
artifact: ResolvedArtifact
|
||||||
} else null
|
): File? {
|
||||||
|
val module = GradleNodeModuleBuilder(project, dependency, listOf(artifact), this)
|
||||||
|
module.visitArtifacts()
|
||||||
|
return module.rebuild()
|
||||||
}
|
}
|
||||||
|
|
||||||
@Synchronized
|
@Synchronized
|
||||||
|
|||||||
Reference in New Issue
Block a user