[Gradle, JS] Remove possibility to declare npm dependency w/o version

#KT-38683 fixed
This commit is contained in:
Ilya Goncharov
2020-05-06 19:05:20 +03:00
parent 3a9e3f29e4
commit 28b0bfd40c
3 changed files with 28 additions and 12 deletions
@@ -1,5 +1,5 @@
/* /*
* Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors. * Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors.
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
*/ */
@@ -54,7 +54,9 @@ interface KotlinDependencyHandler {
fun project(notation: Map<String, Any?>): ProjectDependency fun project(notation: Map<String, Any?>): ProjectDependency
fun npm(name: String, version: String = "*"): Dependency fun npm(name: String): Dependency
fun npm(name: String, version: String): Dependency
fun npm(name: String, directory: File): Dependency fun npm(name: String, directory: File): Dependency
@@ -65,19 +67,19 @@ interface KotlinDependencyHandler {
) )
fun npm(org: String? = null, packageName: String, version: String = "*"): Dependency fun npm(org: String? = null, packageName: String, version: String = "*"): Dependency
fun devNpm(name: String, version: String = "*"): Dependency fun devNpm(name: String, version: String): Dependency
fun devNpm(name: String, directory: File): Dependency fun devNpm(name: String, directory: File): Dependency
fun devNpm(directory: File): Dependency fun devNpm(directory: File): Dependency
fun optionalNpm(name: String, version: String = "*"): Dependency fun optionalNpm(name: String, version: String): Dependency
fun optionalNpm(name: String, directory: File): Dependency fun optionalNpm(name: String, directory: File): Dependency
fun optionalNpm(directory: File): Dependency fun optionalNpm(directory: File): Dependency
fun peerNpm(name: String, version: String = "*"): Dependency fun peerNpm(name: String, version: String): Dependency
} }
interface HasKotlinDependencies { interface HasKotlinDependencies {
@@ -1,3 +1,8 @@
/*
* Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors.
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
*/
package org.jetbrains.kotlin.gradle.plugin.mpp package org.jetbrains.kotlin.gradle.plugin.mpp
import org.gradle.api.Project import org.gradle.api.Project
@@ -59,6 +64,10 @@ class DefaultKotlinDependencyHandler(
override fun project(notation: Map<String, Any?>): ProjectDependency = override fun project(notation: Map<String, Any?>): ProjectDependency =
project.dependencies.project(notation) as ProjectDependency project.dependencies.project(notation) as ProjectDependency
override fun npm(name: String): Dependency {
throw IllegalArgumentException("NPM dependency '$name' doesn't have version. Please, set version explicitly.")
}
private fun addDependencyByAnyNotation( private fun addDependencyByAnyNotation(
configurationName: String, configurationName: String,
dependencyNotation: Any dependencyNotation: Any
@@ -13,7 +13,9 @@ import org.jetbrains.kotlin.gradle.utils.lowerCamelCaseName
import java.io.File import java.io.File
interface NpmDependencyExtension { interface NpmDependencyExtension {
operator fun invoke(name: String, version: String = "*"): NpmDependency operator fun invoke(name: String): NpmDependency
operator fun invoke(name: String, version: String): NpmDependency
operator fun invoke(name: String, directory: File): NpmDependency operator fun invoke(name: String, directory: File): NpmDependency
@@ -24,6 +26,9 @@ private class DefaultNpmDependencyExtension(
private val project: Project, private val project: Project,
private val scope: NpmDependency.Scope private val scope: NpmDependency.Scope
) : NpmDependencyExtension, Closure<NpmDependency>(project.dependencies) { ) : NpmDependencyExtension, Closure<NpmDependency>(project.dependencies) {
override fun invoke(name: String): NpmDependency =
throw IllegalArgumentException("NPM dependency '$name' doesn't have version. Please, set version explicitly.")
override operator fun invoke(name: String, version: String): NpmDependency = override operator fun invoke(name: String, version: String): NpmDependency =
NpmDependency( NpmDependency(
project = project, project = project,
@@ -34,7 +39,7 @@ private class DefaultNpmDependencyExtension(
override operator fun invoke(name: String, directory: File): NpmDependency { override operator fun invoke(name: String, directory: File): NpmDependency {
check(directory.isDirectory) { check(directory.isDirectory) {
"Dependency on local path should point on directory but $directory found" "Dependency '$name' on local path should point on directory but '$directory' found"
} }
return invoke( return invoke(
name = name, name = name,
@@ -49,7 +54,7 @@ private class DefaultNpmDependencyExtension(
) )
override fun call(vararg args: Any?): NpmDependency { override fun call(vararg args: Any?): NpmDependency {
if (args.size > 2) throw npmDeclarationException(args) if (args.size > 2) npmDeclarationException(args)
val arg = args[0] val arg = args[0]
return when (arg) { return when (arg) {
@@ -58,7 +63,7 @@ private class DefaultNpmDependencyExtension(
args = *args args = *args
) )
is File -> invoke(arg) is File -> invoke(arg)
else -> throw npmDeclarationException(args) else -> npmDeclarationException(args)
} }
} }
@@ -76,12 +81,12 @@ private class DefaultNpmDependencyExtension(
name = name, name = name,
directory = arg directory = arg
) )
else -> throw npmDeclarationException(args) else -> npmDeclarationException(args)
} }
} }
private fun npmDeclarationException(args: Array<out Any?>): IllegalArgumentException { private fun npmDeclarationException(args: Array<out Any?>): Nothing {
return IllegalArgumentException( throw IllegalArgumentException(
""" """
Unable to add NPM dependency by $args Unable to add NPM dependency by $args
- npm('name') -> name:* - npm('name') -> name:*