[Gradle, JS] Update version in package.json with file dependency

^KT-40093 fixed
This commit is contained in:
Ilya Goncharov
2020-07-07 23:31:25 +03:00
parent 2bb9838a80
commit 2e2a5a0156
@@ -10,6 +10,7 @@ import org.gradle.api.Project
import org.jetbrains.kotlin.gradle.targets.js.npm.GradleNodeModule
import org.jetbrains.kotlin.gradle.targets.js.npm.NpmProject
import org.jetbrains.kotlin.gradle.targets.js.npm.PackageJson
import org.jetbrains.kotlin.gradle.targets.js.npm.fileVersion
import org.jetbrains.kotlin.gradle.targets.js.npm.resolved.KotlinCompilationNpmResolution
import java.io.File
@@ -18,7 +19,7 @@ class YarnImportedPackagesVersionResolver(
private val npmProjects: Collection<KotlinCompilationNpmResolution>,
private val nodeJsWorldDir: File
) {
private val resolvedVersion = mutableMapOf<String, String>()
private val resolvedVersion = mutableMapOf<String, ResolvedNpmDependency>()
private val importedProjectWorkspaces = mutableListOf<String>()
private val externalModules = npmProjects.flatMapTo(mutableSetOf()) {
it.externalGradleDependencies
@@ -48,7 +49,10 @@ class YarnImportedPackagesVersionResolver(
"Only latest version will be used."
)
val selected = sorted.last()
resolvedVersion[name] = selected.version
resolvedVersion[name] = ResolvedNpmDependency(
version = selected.version,
file = selected.path
)
selected
} else versions.single()
@@ -89,11 +93,16 @@ class YarnImportedPackagesVersionResolver(
var doneSomething = false
map.iterator().forEachRemaining {
val resolved = resolvedVersion[it.key]
if (resolved != null && it.value != resolved) {
it.setValue(resolved)
if (resolved != null && it.value != resolved.version) {
it.setValue(fileVersion(resolved.file))
doneSomething = true
}
}
return doneSomething
}
}
}
private data class ResolvedNpmDependency(
val version: String,
val file: File
)