From ad09492eb08fdc91c2e4d7145272769a2a9ffa7c Mon Sep 17 00:00:00 2001 From: Ilya Goncharov Date: Tue, 26 Nov 2019 13:45:43 +0300 Subject: [PATCH] [Gradle, JS] Migrate on only name-version npm dependencies #KT-32179 fixed --- .../gradle/plugin/HasKotlinDependencies.kt | 8 +++-- .../mpp/DefaultKotlinDependencyHandler.kt | 8 ++--- .../kotlin/gradle/targets/js/NpmVersions.kt | 2 +- .../gradle/targets/js/npm/NpmDependency.kt | 7 ++-- .../targets/js/npm/NpmDependencyExtension.kt | 36 +++++-------------- .../gradle/targets/js/yarn/YarnBasics.kt | 3 +- 6 files changed, 24 insertions(+), 40 deletions(-) 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 a9571b27542..e4a301e8f59 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 @@ -44,8 +44,12 @@ interface KotlinDependencyHandler { fun project(notation: Map): ProjectDependency - fun npm(packageName: String, version: String = "*"): Dependency - fun npm(org: String, packageName: String, version: String = "*"): Dependency + fun npm(name: String, version: String = "*"): Dependency + + @Deprecated( + message = "Use npm(name, version) instead. Name like in package.json" + ) + fun npm(org: String? = null, packageName: String, version: String = "*"): Dependency } interface HasKotlinDependencies { 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 982e7d87438..851521df502 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 @@ -79,9 +79,9 @@ class DefaultKotlinDependencyHandler( project.dependencies.add(configurationName, it) } - override fun npm(packageName: String, version: String) = - NpmDependency(project, null, packageName, version) + override fun npm(name: String, version: String): NpmDependency = + NpmDependency(project, name, version) - override fun npm(org: String, packageName: String, version: String) = - NpmDependency(project, org, packageName, version) + override fun npm(org: String?, packageName: String, version: String) = + npm("${if (org != null) "@$org/" else ""}$packageName", version) } diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/NpmVersions.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/NpmVersions.kt index ffa277de11a..b80e84af8b3 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/NpmVersions.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/NpmVersions.kt @@ -54,7 +54,7 @@ interface RequiredKotlinJsDependency { data class NpmPackageVersion(val name: String, var version: String) : RequiredKotlinJsDependency { override fun createDependency(project: Project, scope: NpmDependency.Scope): Dependency = - NpmDependency(project, null, name, version, scope) + NpmDependency(project, name, version, scope) } data class KotlinGradleNpmPackage(val simpleModuleName: String) : RequiredKotlinJsDependency { 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 b1398d23168..9d444ef76e3 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 @@ -21,7 +21,6 @@ import java.io.File data class NpmDependency( internal val project: Project, - private val org: String?, private val name: String, private val version: String, val scope: Scope = Scope.NORMAL @@ -37,7 +36,7 @@ data class NpmDependency( PEER } - override fun getGroup(): String? = org + override fun getGroup(): String? = null internal var parent: NpmDependency? = null internal val dependencies = mutableSetOf() @@ -123,7 +122,7 @@ data class NpmDependency( return nodeJs.npmResolutionManager.getNpmDependencyResolvedCompilation(this) } - val key: String = if (org == null) name else "@$org/$name" + val key: String = name override fun toString() = "$key: $version" @@ -139,7 +138,7 @@ data class NpmDependency( override fun getTargetComponentId() = DefaultLibraryBinaryIdentifier(project.path, key, "npm") - override fun copy(): Dependency = this.copy(org = org) + override fun copy(): Dependency = this.copy(name = name) private var reason: String? = null 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 78215b1ee1e..8ca34463116 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 @@ -11,56 +11,38 @@ import org.gradle.api.plugins.ExtensionAware import org.gradle.api.reflect.TypeOf interface NpmDependencyExtension { - operator fun invoke(packageName: String, version: String = "*"): NpmDependency - - operator fun invoke(org: String, packageName: String, version: String = "*"): NpmDependency + operator fun invoke(name: String, version: String = "*"): NpmDependency } fun Project.addNpmDependencyExtension() { val dependencies = this.dependencies as ExtensionAware val npmDependencyExtension: NpmDependencyExtension = object : NpmDependencyExtension, Closure(dependencies) { - override operator fun invoke(packageName: String, version: String): NpmDependency { - return NpmDependency(this@addNpmDependencyExtension, null, packageName, version) - } - - override operator fun invoke(org: String, packageName: String, version: String): NpmDependency { - return NpmDependency(this@addNpmDependencyExtension, org, packageName, version) + override operator fun invoke(name: String, version: String): NpmDependency { + return NpmDependency(this@addNpmDependencyExtension, name, version) } override fun call(vararg args: Any?): NpmDependency { val size = args.size - if (size > 3) throw IllegalArgumentException( + if (size > 2) throw IllegalArgumentException( """ Unable to add NPM dependency by $args - - npm('packageName') -> packageName:* - - npm('packageName', 'version') -> packageName:version - - npm('org', 'packageName', 'version') -> org/packageName:version + - npm('name') -> name:* + - npm('name', 'version') -> name:version """.trimIndent() ) - if (size == 3) { - val (org, packageName, version) = args - .map { it as String } - - return invoke( - org = org, - packageName = packageName, - version = version - ) - } - - val packageName = args[0] as String + val name = args[0] as String val version = if (size > 1) args[1] as String else null return if (version != null) { invoke( - packageName = packageName, + name = name, version = version ) } else { invoke( - packageName = packageName + name = name ) } } diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/yarn/YarnBasics.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/yarn/YarnBasics.kt index 347ca6ab097..5b8ba311f43 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/yarn/YarnBasics.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/yarn/YarnBasics.kt @@ -69,8 +69,7 @@ abstract class YarnBasics : NpmApi { val scopedName = dep.scopedName val child = NpmDependency( src.project, - scopedName.scope, - scopedName.name, + scopedName.toString(), dep.version ?: "*" ) child.parent = src