[Gradle, JS] Consider GString in npm dependencies parse in root dependencies

^KT-42462 fixed
This commit is contained in:
Ilya Goncharov
2020-10-05 13:40:45 +03:00
parent 39cde978d0
commit bcdc53d1c4
@@ -6,6 +6,7 @@
package org.jetbrains.kotlin.gradle.targets.js.npm package org.jetbrains.kotlin.gradle.targets.js.npm
import groovy.lang.Closure import groovy.lang.Closure
import groovy.lang.GString
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
@@ -163,12 +164,15 @@ private abstract class NpmDependencyExtensionDelegate(
override fun call(vararg args: Any?): NpmDependency { override fun call(vararg args: Any?): NpmDependency {
if (args.size > 3) npmDeclarationException(args) if (args.size > 3) npmDeclarationException(args)
val arg = args[0] return when (val arg = args[0]) {
return when (arg) {
is String -> withName( is String -> withName(
name = arg, name = arg,
args = *args args = *args
) )
is GString -> withName(
name = arg.toString(),
args = *args
)
else -> processNonStringFirstArgument(arg, *args) else -> processNonStringFirstArgument(arg, *args)
} }
} }
@@ -176,10 +180,9 @@ private abstract class NpmDependencyExtensionDelegate(
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 arg1 = if (args.size > 1) args[1] else null
val generateExternals = generateExternalsIfPossible(*args) val generateExternals = generateExternalsIfPossible(*args)
return when (arg1) { return when (val arg1 = if (args.size > 1) args[1] else null) {
null -> invoke( null -> invoke(
name = name name = name
) )
@@ -188,6 +191,11 @@ private abstract class NpmDependencyExtensionDelegate(
version = arg1, version = arg1,
generateExternals = generateExternals generateExternals = generateExternals
) )
is GString -> invoke(
name = name,
version = arg1.toString(),
generateExternals = generateExternals
)
else -> processNamedNonStringSecondArgument( else -> processNamedNonStringSecondArgument(
name, name,
arg1, arg1,