From c72e4a0091da8bc86eda9c92787aa9b5e5bce347 Mon Sep 17 00:00:00 2001 From: Ilya Goncharov Date: Fri, 27 Mar 2020 12:43:22 +0300 Subject: [PATCH] [Gradle, JS] KT-37207 Support file-only npm dependency in extension --- .../targets/js/npm/NpmDependencyExtension.kt | 25 ++++++++++++++++--- 1 file changed, 21 insertions(+), 4 deletions(-) diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/npm/NpmDependencyExtension.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/npm/NpmDependencyExtension.kt index 20416fb2eb0..54214dc40b0 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/npm/NpmDependencyExtension.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/npm/NpmDependencyExtension.kt @@ -15,6 +15,8 @@ interface NpmDependencyExtension { operator fun invoke(name: String, version: String = "*"): NpmDependency operator fun invoke(name: String, directory: File): NpmDependency + + operator fun invoke(directory: File): NpmDependency } fun Project.addNpmDependencyExtension() { @@ -34,13 +36,28 @@ fun Project.addNpmDependencyExtension() { version = fileVersion(directory) ) + override operator fun invoke(directory: File): NpmDependency = + invoke( + name = moduleName(directory), + directory = directory + ) + override fun call(vararg args: Any?): NpmDependency { - val size = args.size - if (size > 2) throw npmDeclarationException(args) + if (args.size > 2) throw npmDeclarationException(args) - val name = args[0] as String - val arg = if (size > 1) args[1] else null + val arg = args[0] + return when (arg) { + is String -> withName( + name = arg, + args = *args + ) + is File -> invoke(arg) + else -> throw npmDeclarationException(args) + } + } + private fun withName(name: String, vararg args: Any?): NpmDependency { + val arg = if (args.size > 1) args[1] else null return when (arg) { null -> invoke( name = name