[Gradle, JS] Support generateKotlinExternals option for Groovy
KT-38331
This commit is contained in:
+37
-11
@@ -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)
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user