[Gradle, JS] Support generateKotlinExternals option for Groovy

KT-38331
This commit is contained in:
Ilya Goncharov
2020-05-07 18:25:09 +03:00
parent e8d10d45a9
commit dcb961af19
@@ -155,7 +155,7 @@ private abstract class AbstractNpmDependencyExtension(
) )
override fun call(vararg args: Any?): NpmDependency { override fun call(vararg args: Any?): NpmDependency {
if (args.size > 2) npmDeclarationException(args) if (args.size > 3) npmDeclarationException(args)
val arg = args[0] val arg = args[0]
return when (arg) { return when (arg) {
@@ -163,29 +163,38 @@ private abstract class AbstractNpmDependencyExtension(
name = arg, name = arg,
args = *args args = *args
) )
else -> processNonStringFirstArgument(args) else -> processNonStringFirstArgument(arg, args)
} }
} }
protected abstract fun processNonStringFirstArgument(arg: Any?, vararg args: Any?): NpmDependency protected abstract fun processNonStringFirstArgument(arg: Any?, vararg args: Any?): NpmDependency
private fun withName(name: String, vararg args: Any?): NpmDependency { private fun withName(name: String, vararg args: Any?): NpmDependency {
val arg = if (args.size > 1) args[1] else null val arg1 = if (args.size > 1) args[1] else null
return when (arg) { val generateKotlinExternals = secondArgOrFalse(args)
return when (arg1) {
null -> invoke( null -> invoke(
name = name name = name
) )
is String -> invoke( is String -> invoke(
name = name, name = name,
version = arg version = arg1,
generateKotlinExternals = generateKotlinExternals
)
else -> processNamedNonStringSecondArgument(
name,
arg1,
generateKotlinExternals,
args
) )
else -> processNonStringNameArgument(name, arg, args)
} }
} }
protected abstract fun processNonStringNameArgument( protected abstract fun processNamedNonStringSecondArgument(
name: String, name: String,
arg: Any?, arg: Any?,
generateKotlinExternals: Boolean,
vararg args: Any? vararg args: Any?
): NpmDependency ): NpmDependency
@@ -202,6 +211,11 @@ private abstract class AbstractNpmDependencyExtension(
protected open fun possibleVariants(): List<Pair<String, String>> { protected open fun possibleVariants(): List<Pair<String, String>> {
return listOf("npm('name', 'version')" to "name:version") return listOf("npm('name', 'version')" to "name:version")
} }
protected fun secondArgOrFalse(vararg args: Any?): Boolean {
val arg2 = if (args.size > 2) args[2] else null
return (arg2 as? Boolean) ?: false
}
} }
private class DefaultNpmDependencyExtension( private class DefaultNpmDependencyExtension(
@@ -227,21 +241,28 @@ private class DefaultNpmDependencyExtension(
) )
override fun processNonStringFirstArgument(arg: Any?, vararg args: Any?): NpmDependency { override fun processNonStringFirstArgument(arg: Any?, vararg args: Any?): NpmDependency {
val generateKotlinExternals = secondArgOrFalse(args)
return when (arg) { return when (arg) {
is File -> invoke(arg) is File -> invoke(
directory = arg,
generateKotlinExternals = generateKotlinExternals
)
else -> npmDeclarationException(args) else -> npmDeclarationException(args)
} }
} }
override fun processNonStringNameArgument( override fun processNamedNonStringSecondArgument(
name: String, name: String,
arg: Any?, arg: Any?,
generateKotlinExternals: Boolean,
vararg args: Any? vararg args: Any?
): NpmDependency { ): NpmDependency {
return when (arg) { return when (arg) {
is File -> invoke( is File -> invoke(
name = name, name = name,
directory = arg directory = arg,
generateKotlinExternals = generateKotlinExternals
) )
else -> npmDeclarationException(args) else -> npmDeclarationException(args)
} }
@@ -274,6 +295,11 @@ private class NpmDependencyWithoutDirectoryExtension(
override fun processNonStringFirstArgument(arg: Any?, vararg args: Any?): NpmDependency = override fun processNonStringFirstArgument(arg: Any?, vararg args: Any?): NpmDependency =
npmDeclarationException(args) npmDeclarationException(args)
override fun processNonStringNameArgument(name: String, arg: Any?, vararg args: Any?): NpmDependency = override fun processNamedNonStringSecondArgument(
name: String,
arg: Any?,
generateKotlinExternals: Boolean,
vararg args: Any?
): NpmDependency =
npmDeclarationException(args) npmDeclarationException(args)
} }