From bb569f36b16b08ec06c5921fe97a6fae8239f271 Mon Sep 17 00:00:00 2001 From: Ilya Goncharov Date: Fri, 31 Jul 2020 18:09:10 +0300 Subject: [PATCH] [Gradle, JS] Implement reason and other methods beside version ^KT-41054 fixed --- .../targets/js/npm/NpmDependencyConstraint.kt | 56 +++++++++++++++---- 1 file changed, 46 insertions(+), 10 deletions(-) diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/npm/NpmDependencyConstraint.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/npm/NpmDependencyConstraint.kt index 4ef9bd3a68d..6d76912b31c 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/npm/NpmDependencyConstraint.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/npm/NpmDependencyConstraint.kt @@ -9,6 +9,7 @@ import org.gradle.api.Action import org.gradle.api.Project import org.gradle.api.artifacts.* import org.gradle.api.attributes.AttributeContainer +import org.gradle.api.internal.artifacts.ModuleVersionSelectorStrictSpec import org.gradle.api.internal.artifacts.dependencies.DefaultMutableVersionConstraint import org.gradle.api.internal.artifacts.dependencies.DependencyConstraintInternal import org.gradle.api.internal.attributes.ImmutableAttributes @@ -20,6 +21,8 @@ class NpmDependencyConstraint( private val version: String ) : DependencyConstraintInternal { + private var reason: String? = null + private val versionConstraint = DefaultMutableVersionConstraint(version) override fun getGroup(): String? = null @@ -28,8 +31,9 @@ class NpmDependencyConstraint( override fun getVersion(): String = versionConstraint.version - override fun matchesStrictly(p0: ModuleVersionIdentifier): Boolean { - TODO("Not yet implemented") + override fun matchesStrictly(identifier: ModuleVersionIdentifier): Boolean { + return ModuleVersionSelectorStrictSpec(this) + .isSatisfiedBy(identifier) } override fun getModule(): ModuleIdentifier { @@ -44,20 +48,29 @@ class NpmDependencyConstraint( return ImmutableAttributes.EMPTY } - override fun attributes(p0: Action): DependencyConstraint { + override fun attributes(configureAction: Action): DependencyConstraint { + warnAboutInternalApiUse() return this } - override fun version(p0: Action) { - TODO("Not yet implemented") + private fun warnAboutInternalApiUse() { + project.logger.warn( + """Cannot set attributes for NPM constraint '${this.path}:${this.version}""" + ) + } + + override fun version(configureAction: Action) { + configureAction.execute(versionConstraint) + val nodeJs = NodeJsRootPlugin.apply(project.rootProject) + nodeJs.npmResolutionManager.putNpmResolution(path, version) } override fun getReason(): String? { - return null + return reason } - override fun because(p0: String?) { - TODO("Not yet implemented") + override fun because(reason: String?) { + this.reason = reason } override fun getVersionConstraint(): VersionConstraint { @@ -66,11 +79,34 @@ class NpmDependencyConstraint( return versionConstraint } - override fun setForce(p0: Boolean) { - + override fun setForce(force: Boolean) { } override fun isForce(): Boolean { return false } + + override fun equals(other: Any?): Boolean { + if (this === other) return true + if (javaClass != other?.javaClass) return false + + other as NpmDependencyConstraint + + if (project != other.project) return false + if (path != other.path) return false + if (versionConstraint != other.versionConstraint) return false + + return true + } + + override fun hashCode(): Int { + var result = project.hashCode() + result = 31 * result + path.hashCode() + result = 31 * result + versionConstraint.hashCode() + return result + } + + override fun toString(): String { + return "NpmDependencyConstraint(path='$path', versionConstraint=$versionConstraint)" + } } \ No newline at end of file