From 2378d9ba0a55df2cd973f473166db45d2651f3f0 Mon Sep 17 00:00:00 2001 From: Ilya Goncharov Date: Wed, 6 May 2020 19:15:30 +0300 Subject: [PATCH] [Gradle, JS] Remove copypaste on directoryNpmDependency #KT-38683 fixed --- .../gradle/plugin/HasKotlinDependencies.kt | 28 ------------- .../plugin/KotlinNpmDependencyHandler.kt | 38 +++++++++++++++++ .../mpp/DefaultKotlinDependencyHandler.kt | 41 +++++++++++-------- .../gradle/targets/js/npm/NpmDependency.kt | 18 ++++++++ .../targets/js/npm/NpmDependencyExtension.kt | 12 +++--- 5 files changed, 86 insertions(+), 51 deletions(-) create mode 100644 libraries/tools/kotlin-gradle-plugin-api/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinNpmDependencyHandler.kt diff --git a/libraries/tools/kotlin-gradle-plugin-api/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/HasKotlinDependencies.kt b/libraries/tools/kotlin-gradle-plugin-api/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/HasKotlinDependencies.kt index 921a590f47c..039167ab556 100644 --- a/libraries/tools/kotlin-gradle-plugin-api/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/HasKotlinDependencies.kt +++ b/libraries/tools/kotlin-gradle-plugin-api/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/HasKotlinDependencies.kt @@ -10,7 +10,6 @@ import org.gradle.api.artifacts.Dependency import org.gradle.api.artifacts.ExternalModuleDependency import org.gradle.api.artifacts.ProjectDependency import org.gradle.util.ConfigureUtil -import java.io.File interface KotlinDependencyHandler { fun api(dependencyNotation: Any): Dependency? @@ -53,33 +52,6 @@ interface KotlinDependencyHandler { project(listOf("path", "configuration").zip(listOfNotNull(path, configuration)).toMap()) fun project(notation: Map): ProjectDependency - - fun npm(name: String): Dependency - - fun npm(name: String, version: String): Dependency - - fun npm(name: String, directory: File): Dependency - - fun npm(directory: File): Dependency - - @Deprecated( - message = "Use npm(name, version) instead. Name like in package.json" - ) - fun npm(org: String? = null, packageName: String, version: String = "*"): Dependency - - fun devNpm(name: String, version: String): Dependency - - fun devNpm(name: String, directory: File): Dependency - - fun devNpm(directory: File): Dependency - - fun optionalNpm(name: String, version: String): Dependency - - fun optionalNpm(name: String, directory: File): Dependency - - fun optionalNpm(directory: File): Dependency - - fun peerNpm(name: String, version: String): Dependency } interface HasKotlinDependencies { diff --git a/libraries/tools/kotlin-gradle-plugin-api/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinNpmDependencyHandler.kt b/libraries/tools/kotlin-gradle-plugin-api/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinNpmDependencyHandler.kt new file mode 100644 index 00000000000..77b271ed409 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-api/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinNpmDependencyHandler.kt @@ -0,0 +1,38 @@ +/* + * 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 + +import org.gradle.api.artifacts.Dependency +import java.io.File + +interface KotlinNpmDependencyHandler { + fun npm(name: String): Dependency + + fun npm(name: String, version: String): Dependency + + fun npm(name: String, directory: File): Dependency + + fun npm(directory: File): Dependency + + @Deprecated( + message = "Use npm(name, version) instead. Name like in package.json" + ) + fun npm(org: String? = null, packageName: String, version: String = "*"): Dependency + + fun devNpm(name: String, version: String): Dependency + + fun devNpm(name: String, directory: File): Dependency + + fun devNpm(directory: File): Dependency + + fun optionalNpm(name: String, version: String): Dependency + + fun optionalNpm(name: String, directory: File): Dependency + + fun optionalNpm(directory: File): Dependency + + fun peerNpm(name: String, version: String): Dependency +} \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/DefaultKotlinDependencyHandler.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/DefaultKotlinDependencyHandler.kt index f4c6461d3c7..9c748639c26 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/DefaultKotlinDependencyHandler.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/DefaultKotlinDependencyHandler.kt @@ -11,15 +11,17 @@ import org.gradle.api.artifacts.ExternalModuleDependency import org.gradle.api.artifacts.ProjectDependency import org.jetbrains.kotlin.gradle.plugin.HasKotlinDependencies import org.jetbrains.kotlin.gradle.plugin.KotlinDependencyHandler +import org.jetbrains.kotlin.gradle.plugin.KotlinNpmDependencyHandler import org.jetbrains.kotlin.gradle.targets.js.npm.NpmDependency -import org.jetbrains.kotlin.gradle.targets.js.npm.fileVersion +import org.jetbrains.kotlin.gradle.targets.js.npm.directoryNpmDependency import org.jetbrains.kotlin.gradle.targets.js.npm.moduleName import java.io.File class DefaultKotlinDependencyHandler( val parent: HasKotlinDependencies, val project: Project -) : KotlinDependencyHandler { +) : KotlinDependencyHandler, + KotlinNpmDependencyHandler { override fun api(dependencyNotation: Any): Dependency? = addDependencyByAnyNotation(parent.apiConfigurationName, dependencyNotation) @@ -99,7 +101,11 @@ class DefaultKotlinDependencyHandler( ) override fun npm(name: String, directory: File): NpmDependency = - directoryNpmDependency(name, directory, NpmDependency.Scope.NORMAL) + directoryNpmDependency( + name, + directory, + NpmDependency.Scope.NORMAL + ) override fun npm(directory: File): NpmDependency = npm( @@ -119,7 +125,11 @@ class DefaultKotlinDependencyHandler( ) override fun devNpm(name: String, directory: File): NpmDependency = - directoryNpmDependency(name, directory, NpmDependency.Scope.DEV) + directoryNpmDependency( + name, + directory, + NpmDependency.Scope.DEV + ) override fun devNpm(directory: File): NpmDependency = devNpm( @@ -136,7 +146,11 @@ class DefaultKotlinDependencyHandler( ) override fun optionalNpm(name: String, directory: File): NpmDependency = - directoryNpmDependency(name, directory, NpmDependency.Scope.OPTIONAL) + directoryNpmDependency( + name, + directory, + NpmDependency.Scope.OPTIONAL + ) override fun optionalNpm(directory: File): NpmDependency = optionalNpm( @@ -156,16 +170,11 @@ class DefaultKotlinDependencyHandler( name: String, directory: File, scope: NpmDependency.Scope - ): NpmDependency { - check(directory.isDirectory) { - "Dependency on local path should point on directory but $directory found" - } - - return NpmDependency( - project = project, - name = name, - version = fileVersion(directory), - scope = scope + ): NpmDependency = + directoryNpmDependency( + project, + name, + directory, + scope ) - } } diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/npm/NpmDependency.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/npm/NpmDependency.kt index a88e43b70ca..d76631e7d8c 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/npm/NpmDependency.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/npm/NpmDependency.kt @@ -127,6 +127,24 @@ data class NpmDependency( override fun getReason(): String? = reason } +internal fun directoryNpmDependency( + project: Project, + name: String, + directory: File, + scope: NpmDependency.Scope +): NpmDependency { + check(directory.isDirectory) { + "Dependency on local path should point on directory but $directory found" + } + + return NpmDependency( + project = project, + name = name, + version = fileVersion(directory), + scope = scope + ) +} + internal fun String.isFileVersion() = startsWith(FILE_VERSION_PREFIX) 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 50a17b412ef..daa3c11d9b9 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 @@ -37,15 +37,13 @@ private class DefaultNpmDependencyExtension( scope = scope ) - override operator fun invoke(name: String, directory: File): NpmDependency { - check(directory.isDirectory) { - "Dependency '$name' on local path should point on directory but '$directory' found" - } - return invoke( + override operator fun invoke(name: String, directory: File): NpmDependency = + directoryNpmDependency( + project = project, name = name, - version = fileVersion(directory) + directory = directory, + scope = scope ) - } override operator fun invoke(directory: File): NpmDependency = invoke(