From 459577e64652ab5ca8b0f9fb34fcc3e7a1586655 Mon Sep 17 00:00:00 2001 From: Ilya Goncharov Date: Fri, 27 Mar 2020 12:12:00 +0300 Subject: [PATCH] [Gradle, JS] KT-37207 Add constructor fot NpmDependency with only file --- .../gradle/targets/js/npm/NpmDependency.kt | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) 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 951e1c9f168..c43b60d1761 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 @@ -16,6 +16,7 @@ import org.gradle.api.internal.artifacts.dependencies.SelfResolvingDependencyInt import org.gradle.api.tasks.TaskDependency import org.gradle.internal.component.local.model.DefaultLibraryBinaryIdentifier import org.jetbrains.kotlin.gradle.targets.js.nodejs.NodeJsRootPlugin +import org.jetbrains.kotlin.gradle.targets.js.npm.NpmProject.Companion.PACKAGE_JSON import org.jetbrains.kotlin.gradle.targets.js.npm.resolved.KotlinCompilationNpmResolution import java.io.File @@ -39,6 +40,15 @@ data class NpmDependency( "$FILE_VERSION_PREFIX${directory.canonicalPath}" ) + constructor( + project: Project, + directory: File + ) : this( + project, + moduleName(directory), + directory + ) + enum class Scope { NORMAL, DEV, @@ -136,4 +146,14 @@ data class NpmDependency( override fun getReason(): String? = reason } +private fun moduleName(directory: File): String { + val packageJson = directory.resolve(PACKAGE_JSON) + + check(!packageJson.isFile) { + "There is no NPM module in $directory. Declare valid $PACKAGE_JSON in it." + } + + return fromSrcPackageJson(packageJson)!!.name +} + const val FILE_VERSION_PREFIX = "file:" \ No newline at end of file