[Gradle, JS] Migrate on only name-version npm dependencies

#KT-32179 fixed
This commit is contained in:
Ilya Goncharov
2019-11-26 13:45:43 +03:00
parent 95b56e10b4
commit ad09492eb0
6 changed files with 24 additions and 40 deletions
@@ -44,8 +44,12 @@ interface KotlinDependencyHandler {
fun project(notation: Map<String, Any?>): 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 {
@@ -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)
}
@@ -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 {
@@ -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<NpmDependency>()
@@ -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
@@ -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<NpmDependency>(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
)
}
}
@@ -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