[Gradle, JS] KotlinDependencyHandler extends from KotlinNpmDependencyHandler to provide these functions in interface

#KT-38683 fixed
This commit is contained in:
Ilya Goncharov
2020-05-07 12:34:09 +03:00
parent 4fb1e4614d
commit efe70da594
3 changed files with 20 additions and 22 deletions
@@ -11,7 +11,7 @@ import org.gradle.api.artifacts.ExternalModuleDependency
import org.gradle.api.artifacts.ProjectDependency
import org.gradle.util.ConfigureUtil
interface KotlinDependencyHandler {
interface KotlinDependencyHandler : KotlinNpmDependencyHandler {
fun api(dependencyNotation: Any): Dependency?
fun api(dependencyNotation: String, configure: ExternalModuleDependency.() -> Unit): ExternalModuleDependency
fun <T : Dependency> api(dependency: T, configure: T.() -> Unit): T
@@ -11,7 +11,6 @@ import org.gradle.api.artifacts.ExternalModuleDependency
import org.gradle.api.artifacts.ProjectDependency
import org.jetbrains.kotlin.gradle.plugin.HasKotlinDependencies
import org.jetbrains.kotlin.gradle.plugin.KotlinDependencyHandler
import org.jetbrains.kotlin.gradle.plugin.KotlinNpmDependencyHandler
import org.jetbrains.kotlin.gradle.targets.js.npm.NpmDependency
import org.jetbrains.kotlin.gradle.targets.js.npm.directoryNpmDependency
import org.jetbrains.kotlin.gradle.targets.js.npm.moduleName
@@ -21,8 +20,7 @@ import java.io.File
class DefaultKotlinDependencyHandler(
val parent: HasKotlinDependencies,
val project: Project
) : KotlinDependencyHandler,
KotlinNpmDependencyHandler {
) : KotlinDependencyHandler {
override fun api(dependencyNotation: Any): Dependency? =
addDependencyByAnyNotation(parent.apiConfigurationName, dependencyNotation)
@@ -22,6 +22,24 @@ interface NpmDependencyExtension {
operator fun invoke(directory: File): NpmDependency
}
internal fun Project.addNpmDependencyExtension() {
val extensions = (dependencies as ExtensionAware).extensions
NpmDependency.Scope.values()
.forEach { scope ->
val extension = scope.name
.removePrefix(NpmDependency.Scope.NORMAL.name)
.toLowerCase()
extensions
.add(
TypeOf.typeOf<NpmDependencyExtension>(NpmDependencyExtension::class.java),
lowerCamelCaseName(extension, "npm"),
DefaultNpmDependencyExtension(this, scope)
)
}
}
private class DefaultNpmDependencyExtension(
private val project: Project,
private val scope: NpmDependency.Scope
@@ -94,21 +112,3 @@ private class DefaultNpmDependencyExtension(
)
}
}
internal fun Project.addNpmDependencyExtension() {
val extensions = (dependencies as ExtensionAware).extensions
NpmDependency.Scope.values()
.forEach { scope ->
val extension = scope.name
.removePrefix(NpmDependency.Scope.NORMAL.name)
.toLowerCase()
extensions
.add(
TypeOf.typeOf<NpmDependencyExtension>(NpmDependencyExtension::class.java),
lowerCamelCaseName(extension, "npm"),
DefaultNpmDependencyExtension(this, scope)
)
}
}