[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 @get:Input
val internalDependencies: Collection<String>, val internalDependencies: Collection<String>,
@get:Input @get:InputFiles
val internalCompositeDependencies: Collection<String>, val internalCompositeDependencies: Collection<File>,
@get:InputFiles @get:InputFiles
val externalGradleDependencies: Collection<File>, val externalGradleDependencies: Collection<File>,
@@ -265,7 +265,7 @@ internal class KotlinCompilationNpmResolver(
val inputs: PackageJsonProducerInputs val inputs: PackageJsonProducerInputs
get() = PackageJsonProducerInputs( get() = PackageJsonProducerInputs(
internalDependencies.map { it.npmProject.name }, internalDependencies.map { it.npmProject.name },
internalCompositeDependencies.map { it.includedBuild.projectDir.canonicalPath }, internalCompositeDependencies.flatMap { it.getPackages() },
externalGradleDependencies.map { it.artifact.file }, externalGradleDependencies.map { it.artifact.file },
externalNpmDependencies.map { "${it.scope} ${it.key}:${it.version}" } externalNpmDependencies.map { "${it.scope} ${it.key}:${it.version}" }
) )
@@ -279,23 +279,15 @@ internal class KotlinCompilationNpmResolver(
resolver.gradleNodeModules.get(it.dependency, it.artifact.file) resolver.gradleNodeModules.get(it.dependency, it.artifact.file)
} }
val compositeDependencies = internalCompositeDependencies.mapNotNull { dependency -> val compositeDependencies = internalCompositeDependencies.flatMap { dependency ->
val packages = dependency.includedBuild dependency.getPackages()
.projectDir .map { file ->
.resolve(nodeJs.projectPackagesDir.relativeTo(nodeJs.rootProject.rootDir))
packages
.list()
?.map { fileName ->
packages.resolve(fileName).resolve(PACKAGE_JSON)
}
?.map { file ->
resolver.compositeNodeModules.get( resolver.compositeNodeModules.get(
dependency.dependency, dependency.dependency,
file file
) )
} }
} }
.flatten()
.filterNotNull() .filterNotNull()
val packageJson = PackageJson( 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 // TODO: real versions conflict resolution
private fun chooseVersion(oldVersion: String?, newVersion: String): String { private fun chooseVersion(oldVersion: String?, newVersion: String): String {
// https://yarnpkg.com/lang/en/docs/dependency-versions/#toc-x-ranges // https://yarnpkg.com/lang/en/docs/dependency-versions/#toc-x-ranges