[Gradle, JS] Resolution of compilation's configurations inside NPM conf

^KT-40201 fixed
This commit is contained in:
Ilya Goncharov
2020-07-10 20:13:57 +03:00
parent 40311dbe05
commit 49c8d99f61
2 changed files with 24 additions and 4 deletions
@@ -7,6 +7,7 @@ package org.jetbrains.kotlin.gradle.plugin.sources
import org.gradle.api.Project
import org.gradle.api.artifacts.Configuration
import org.jetbrains.kotlin.gradle.plugin.KotlinCompilation
import org.jetbrains.kotlin.gradle.plugin.KotlinSourceSet
import org.jetbrains.kotlin.gradle.plugin.sources.KotlinDependencyScope.*
import org.jetbrains.kotlin.gradle.utils.API
@@ -31,6 +32,19 @@ internal fun Project.sourceSetDependencyConfigurationByScope(sourceSet: KotlinSo
}
)
internal fun Project.compilationDependencyConfigurationByScope(
compilation: KotlinCompilation<*>,
scope: KotlinDependencyScope
): Configuration =
project.configurations.getByName(
when (scope) {
API_SCOPE -> compilation.apiConfigurationName
IMPLEMENTATION_SCOPE -> compilation.implementationConfigurationName
COMPILE_ONLY_SCOPE -> compilation.compileOnlyConfigurationName
RUNTIME_ONLY_SCOPE -> compilation.runtimeOnlyConfigurationName
}
)
internal fun Project.sourceSetMetadataConfigurationByScope(sourceSet: KotlinSourceSet, scope: KotlinDependencyScope): Configuration =
project.configurations.getByName(
when (scope) {
@@ -22,6 +22,7 @@ import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinUsages
import org.jetbrains.kotlin.gradle.plugin.mpp.disambiguateName
import org.jetbrains.kotlin.gradle.plugin.mpp.isMain
import org.jetbrains.kotlin.gradle.plugin.sources.KotlinDependencyScope
import org.jetbrains.kotlin.gradle.plugin.sources.compilationDependencyConfigurationByScope
import org.jetbrains.kotlin.gradle.plugin.sources.sourceSetDependencyConfigurationByScope
import org.jetbrains.kotlin.gradle.plugin.usesPlatformOf
import org.jetbrains.kotlin.gradle.targets.js.ir.KotlinJsIrTarget
@@ -133,10 +134,15 @@ internal class KotlinCompilationNpmResolver(
all.isCanBeResolved = true
all.description = "NPM configuration for $compilation."
compilation.allKotlinSourceSets.forEach { sourceSet ->
KotlinDependencyScope.values().forEach { scope ->
val configuration = project.sourceSetDependencyConfigurationByScope(sourceSet, scope)
all.extendsFrom(configuration)
KotlinDependencyScope.values().forEach { scope ->
val compilationConfiguration = project.compilationDependencyConfigurationByScope(
compilation,
scope
)
all.extendsFrom(compilationConfiguration)
compilation.allKotlinSourceSets.forEach { sourceSet ->
val sourceSetConfiguration = project.sourceSetDependencyConfigurationByScope(sourceSet, scope)
all.extendsFrom(sourceSetConfiguration)
}
}