[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.GradleNodeModule
import org.jetbrains.kotlin.gradle.targets.js.npm.NpmProject 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.PackageJson
import org.jetbrains.kotlin.gradle.targets.js.npm.fileVersion
import org.jetbrains.kotlin.gradle.targets.js.npm.resolved.KotlinCompilationNpmResolution import org.jetbrains.kotlin.gradle.targets.js.npm.resolved.KotlinCompilationNpmResolution
import java.io.File import java.io.File
@@ -18,7 +19,7 @@ class YarnImportedPackagesVersionResolver(
private val npmProjects: Collection<KotlinCompilationNpmResolution>, private val npmProjects: Collection<KotlinCompilationNpmResolution>,
private val nodeJsWorldDir: File private val nodeJsWorldDir: File
) { ) {
private val resolvedVersion = mutableMapOf<String, String>() private val resolvedVersion = mutableMapOf<String, ResolvedNpmDependency>()
private val importedProjectWorkspaces = mutableListOf<String>() private val importedProjectWorkspaces = mutableListOf<String>()
private val externalModules = npmProjects.flatMapTo(mutableSetOf()) { private val externalModules = npmProjects.flatMapTo(mutableSetOf()) {
it.externalGradleDependencies it.externalGradleDependencies
@@ -48,7 +49,10 @@ class YarnImportedPackagesVersionResolver(
"Only latest version will be used." "Only latest version will be used."
) )
val selected = sorted.last() val selected = sorted.last()
resolvedVersion[name] = selected.version resolvedVersion[name] = ResolvedNpmDependency(
version = selected.version,
file = selected.path
)
selected selected
} else versions.single() } else versions.single()
@@ -89,11 +93,16 @@ class YarnImportedPackagesVersionResolver(
var doneSomething = false var doneSomething = false
map.iterator().forEachRemaining { map.iterator().forEachRemaining {
val resolved = resolvedVersion[it.key] val resolved = resolvedVersion[it.key]
if (resolved != null && it.value != resolved) { if (resolved != null && it.value != resolved.version) {
it.setValue(resolved) it.setValue(fileVersion(resolved.file))
doneSomething = true doneSomething = true
} }
} }
return doneSomething return doneSomething
} }
} }
private data class ResolvedNpmDependency(
val version: String,
val file: File
)