From c2b3dd8b336feda679364346609b1a97db04148c Mon Sep 17 00:00:00 2001 From: Victor Turansky Date: Mon, 23 Mar 2020 20:27:01 +0300 Subject: [PATCH] KT-34468 Yarn. Support dependency GitHub version --- .../kotlin/gradle/targets/js/yarn/YarnBasics.kt | 9 +++++---- .../jetbrains/kotlin/gradle/targets/js/yarn/YarnLock.kt | 9 ++++++--- 2 files changed, 11 insertions(+), 7 deletions(-) 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 af25ecce5ad..2adb31147bc 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 @@ -11,6 +11,7 @@ import org.jetbrains.kotlin.gradle.targets.js.nodejs.NodeJsRootPlugin import org.jetbrains.kotlin.gradle.targets.js.npm.NpmApi import org.jetbrains.kotlin.gradle.targets.js.npm.NpmDependency import org.jetbrains.kotlin.gradle.targets.js.npm.resolved.KotlinCompilationNpmResolution +import org.jetbrains.kotlin.gradle.targets.js.yarn.YarnLock.Companion.dependencyKey import java.io.File abstract class YarnBasics : NpmApi { @@ -99,7 +100,7 @@ abstract class YarnBasics : NpmApi { ) { val yarnLock = nodeWorkDir.resolve("yarn.lock") if (yarnLock.isFile) { - val byKey = YarnLock.parse(yarnLock).entries.associateBy { it.key } + val byKey = YarnLock.parse(yarnLock).entries.associateBy { it.dependencyKey } val visited = mutableMapOf() fun resolveRecursively(src: NpmDependency): NpmDependency { @@ -112,10 +113,10 @@ abstract class YarnBasics : NpmApi { } visited[src] = src - val key = YarnLock.key(src.key, src.version) + val key = dependencyKey(src.key, src.version) val deps = byKey[key] ?: if (src.version == "*") byKey.entries - .firstOrNull { it.key.startsWith(YarnLock.key(src.key, "")) } + .firstOrNull { it.key.startsWith(dependencyKey(src.key, "")) } ?.value else null @@ -147,4 +148,4 @@ abstract class YarnBasics : NpmApi { } } } -} \ No newline at end of file +} diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/yarn/YarnLock.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/yarn/YarnLock.kt index f52935277a4..a9ce7f87acc 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/yarn/YarnLock.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/yarn/YarnLock.kt @@ -1,5 +1,5 @@ /* - * Copyright 2010-2019 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license + * Copyright 2010-2019 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license * that can be found in the license/LICENSE.txt file. */ @@ -25,7 +25,10 @@ data class YarnLock(val entries: List) { } companion object { - fun key(packageKey: String, version: String) = "$packageKey@$version" + val Entry.dependencyKey: String + get() = key.replace("@github:", "@") + + fun dependencyKey(packageKey: String, version: String) = "$packageKey@$version" private class Node(val parent: Node?, val value: String? = null) { var indent: String? = null @@ -105,4 +108,4 @@ data class YarnLock(val entries: List) { return root } } -} \ No newline at end of file +}