[Gradle, JS] KT-36784 Input as composite package.json

#KT-32466 fixed
#KT-36784 fixed
#KT-36864 fixed
This commit is contained in:
Ilya Goncharov
2020-03-30 14:58:49 +03:00
parent e85501337e
commit fa632a2aea
@@ -245,8 +245,8 @@ internal class KotlinCompilationNpmResolver(
@get:Input
val internalDependencies: Collection<String>,
@get:Input
val internalCompositeDependencies: Collection<String>,
@get:InputFiles
val internalCompositeDependencies: Collection<File>,
@get:InputFiles
val externalGradleDependencies: Collection<File>,
@@ -265,7 +265,7 @@ internal class KotlinCompilationNpmResolver(
val inputs: PackageJsonProducerInputs
get() = PackageJsonProducerInputs(
internalDependencies.map { it.npmProject.name },
internalCompositeDependencies.map { it.includedBuild.projectDir.canonicalPath },
internalCompositeDependencies.flatMap { it.getPackages() },
externalGradleDependencies.map { it.artifact.file },
externalNpmDependencies.map { "${it.scope} ${it.key}:${it.version}" }
)
@@ -279,23 +279,15 @@ internal class KotlinCompilationNpmResolver(
resolver.gradleNodeModules.get(it.dependency, it.artifact.file)
}
val compositeDependencies = internalCompositeDependencies.mapNotNull { dependency ->
val packages = dependency.includedBuild
.projectDir
.resolve(nodeJs.projectPackagesDir.relativeTo(nodeJs.rootProject.rootDir))
packages
.list()
?.map { fileName ->
packages.resolve(fileName).resolve(PACKAGE_JSON)
}
?.map { file ->
val compositeDependencies = internalCompositeDependencies.flatMap { dependency ->
dependency.getPackages()
.map { file ->
resolver.compositeNodeModules.get(
dependency.dependency,
file
)
}
}
.flatten()
.filterNotNull()
val packageJson = PackageJson(
@@ -353,6 +345,16 @@ internal class KotlinCompilationNpmResolver(
)
}
private fun CompositeDependency.getPackages(): List<File> {
return includedBuild
.projectDir
.resolve(nodeJs.projectPackagesDir.relativeTo(nodeJs.rootProject.rootDir))
.list()
?.map(::File)
?.map { it.resolve(PACKAGE_JSON) }
?: emptyList()
}
// TODO: real versions conflict resolution
private fun chooseVersion(oldVersion: String?, newVersion: String): String {
// https://yarnpkg.com/lang/en/docs/dependency-versions/#toc-x-ranges