[Gradle, JS]AbstractNpmDependencyExtension -> DefaultNpmDependencyExtension
This commit is contained in:
committed by
Ilya Goncharov
parent
abf942b928
commit
50151e0e01
+16
-25
@@ -9,6 +9,7 @@ import groovy.lang.Closure
|
|||||||
import org.gradle.api.Project
|
import org.gradle.api.Project
|
||||||
import org.gradle.api.plugins.ExtensionAware
|
import org.gradle.api.plugins.ExtensionAware
|
||||||
import org.gradle.api.reflect.TypeOf
|
import org.gradle.api.reflect.TypeOf
|
||||||
|
import org.jetbrains.kotlin.gradle.utils.lowerCamelCaseName
|
||||||
import java.io.File
|
import java.io.File
|
||||||
|
|
||||||
interface NpmDependencyExtension {
|
interface NpmDependencyExtension {
|
||||||
@@ -19,11 +20,10 @@ interface NpmDependencyExtension {
|
|||||||
operator fun invoke(directory: File): NpmDependency
|
operator fun invoke(directory: File): NpmDependency
|
||||||
}
|
}
|
||||||
|
|
||||||
private abstract class AbstractNpmDependencyExtension(
|
private class DefaultNpmDependencyExtension(
|
||||||
dependencies: ExtensionAware,
|
|
||||||
private val project: Project,
|
private val project: Project,
|
||||||
private val scope: NpmDependency.Scope
|
private val scope: NpmDependency.Scope
|
||||||
) : NpmDependencyExtension, Closure<NpmDependency>(dependencies) {
|
) : NpmDependencyExtension, Closure<NpmDependency>(project.dependencies) {
|
||||||
override operator fun invoke(name: String, version: String): NpmDependency =
|
override operator fun invoke(name: String, version: String): NpmDependency =
|
||||||
NpmDependency(
|
NpmDependency(
|
||||||
project = project,
|
project = project,
|
||||||
@@ -92,29 +92,20 @@ private abstract class AbstractNpmDependencyExtension(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private const val NAME_DEPENDENCIES = "npm"
|
|
||||||
private const val NAME_DEV_DEPENDENCIES = "devNpm"
|
|
||||||
private const val NAME_PEER_DEPENDENCIES = "peerNpm"
|
|
||||||
|
|
||||||
fun Project.addNpmDependencyExtension() {
|
fun Project.addNpmDependencyExtension() {
|
||||||
val dependencies = this.dependencies as ExtensionAware
|
val extensions = (dependencies as ExtensionAware).extensions
|
||||||
|
|
||||||
listOf(NpmDependency.Scope.NORMAL, NpmDependency.Scope.DEV, NpmDependency.Scope.PEER).forEach { scope ->
|
NpmDependency.Scope.values()
|
||||||
val name = when (scope) {
|
.forEach { scope ->
|
||||||
NpmDependency.Scope.DEV -> NAME_DEV_DEPENDENCIES
|
val extension = scope.name
|
||||||
NpmDependency.Scope.PEER -> NAME_PEER_DEPENDENCIES
|
.removePrefix(NpmDependency.Scope.NORMAL.name)
|
||||||
else -> NAME_DEPENDENCIES
|
.toLowerCase()
|
||||||
|
|
||||||
|
extensions
|
||||||
|
.add(
|
||||||
|
TypeOf.typeOf<NpmDependencyExtension>(NpmDependencyExtension::class.java),
|
||||||
|
lowerCamelCaseName(extension, "npm"),
|
||||||
|
DefaultNpmDependencyExtension(this, scope)
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
val dependencyExtension: NpmDependencyExtension = object : AbstractNpmDependencyExtension(dependencies, this, scope) {}
|
|
||||||
|
|
||||||
dependencies
|
|
||||||
.extensions
|
|
||||||
.add(
|
|
||||||
TypeOf.typeOf<NpmDependencyExtension>(NpmDependencyExtension::class.java),
|
|
||||||
name,
|
|
||||||
dependencyExtension
|
|
||||||
)
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user