[Gradle, JS] Add defaultGeneratedKotlinExternals to dependencies extensions

KT-38331
This commit is contained in:
Ilya Goncharov
2020-05-07 17:28:05 +03:00
parent 830555aa8b
commit 50e0e6ac06
@@ -9,6 +9,7 @@ import groovy.lang.Closure
import org.gradle.api.Project import org.gradle.api.Project
import org.gradle.api.plugins.ExtensionAware import org.gradle.api.plugins.ExtensionAware
import org.gradle.api.reflect.TypeOf import org.gradle.api.reflect.TypeOf
import org.jetbrains.kotlin.gradle.plugin.DEFAULT_GENERATE_KOTLIN_EXTERNALS
import org.jetbrains.kotlin.gradle.targets.js.npm.NpmDependency.Scope.* import org.jetbrains.kotlin.gradle.targets.js.npm.NpmDependency.Scope.*
import org.jetbrains.kotlin.gradle.utils.lowerCamelCaseName import org.jetbrains.kotlin.gradle.utils.lowerCamelCaseName
import java.io.File import java.io.File
@@ -41,8 +42,21 @@ internal fun Project.addNpmDependencyExtension() {
} }
val extension = when (scope) { val extension = when (scope) {
NORMAL, DEV, OPTIONAL -> DefaultNpmDependencyExtension(this, scope) NORMAL, OPTIONAL -> DefaultNpmDependencyExtension(
PEER -> NpmDependencyWithoutDirectoryExtension(this, scope) this,
scope,
DEFAULT_GENERATE_KOTLIN_EXTERNALS
)
DEV -> DefaultNpmDependencyExtension(
this,
scope,
false
)
PEER -> NpmDependencyWithoutDirectoryExtension(
this,
scope,
false
)
} }
extensions extensions
@@ -55,8 +69,9 @@ internal fun Project.addNpmDependencyExtension() {
} }
private abstract class AbstractNpmDependencyExtension( private abstract class AbstractNpmDependencyExtension(
private val project: Project, protected val project: Project,
private val scope: NpmDependency.Scope protected val scope: NpmDependency.Scope,
protected val defaultGenerateKotlinExternals: Boolean
) : NpmDependencyExtension, ) : NpmDependencyExtension,
NpmDirectoryDependencyExtension, NpmDirectoryDependencyExtension,
Closure<NpmDependency>(project.dependencies) { Closure<NpmDependency>(project.dependencies) {
@@ -68,7 +83,8 @@ private abstract class AbstractNpmDependencyExtension(
project = project, project = project,
name = name, name = name,
version = version, version = version,
scope = scope scope = scope,
generateKotlinExternals = defaultGenerateKotlinExternals
) )
override operator fun invoke(directory: File): NpmDependency = override operator fun invoke(directory: File): NpmDependency =
@@ -128,9 +144,14 @@ private abstract class AbstractNpmDependencyExtension(
} }
private class DefaultNpmDependencyExtension( private class DefaultNpmDependencyExtension(
private val project: Project, project: Project,
private val scope: NpmDependency.Scope scope: NpmDependency.Scope,
) : AbstractNpmDependencyExtension(project, scope) { defaultGenerateKotlinExternals: Boolean
) : AbstractNpmDependencyExtension(
project,
scope,
defaultGenerateKotlinExternals
) {
override fun invoke(name: String): NpmDependency = override fun invoke(name: String): NpmDependency =
onlyNameNpmDependency(name) onlyNameNpmDependency(name)
@@ -139,7 +160,8 @@ private class DefaultNpmDependencyExtension(
project = project, project = project,
name = name, name = name,
directory = directory, directory = directory,
scope = scope scope = scope,
generateKotlinExternals = defaultGenerateKotlinExternals
) )
override operator fun invoke(directory: File): NpmDependency = override operator fun invoke(directory: File): NpmDependency =
@@ -179,8 +201,13 @@ private class DefaultNpmDependencyExtension(
private class NpmDependencyWithoutDirectoryExtension( private class NpmDependencyWithoutDirectoryExtension(
project: Project, project: Project,
scope: NpmDependency.Scope scope: NpmDependency.Scope,
) : AbstractNpmDependencyExtension(project, scope) { defaultGenerateKotlinExternals: Boolean
) : AbstractNpmDependencyExtension(
project,
scope,
defaultGenerateKotlinExternals
) {
override fun invoke(name: String, directory: File): NpmDependency = override fun invoke(name: String, directory: File): NpmDependency =
npmDeclarationException(arrayOf(name, directory)) npmDeclarationException(arrayOf(name, directory))