[Gradle, JS]Add peerNpm method for peerDependencies to KotlinDependencyHandler

This commit is contained in:
subroh0508
2020-05-04 17:33:00 +09:00
committed by Ilya Goncharov
parent 3e2feac4ea
commit 231324d119
3 changed files with 49 additions and 20 deletions
@@ -70,6 +70,12 @@ interface KotlinDependencyHandler {
fun devNpm(name: String, directory: File): Dependency
fun devNpm(directory: File): Dependency
fun peerNpm(name: String, version: String = "*"): Dependency
fun peerNpm(name: String, directory: File): Dependency
fun peerNpm(directory: File): Dependency
}
interface HasKotlinDependencies {
@@ -131,4 +131,28 @@ class DefaultKotlinDependencyHandler(
name = moduleName(directory),
directory = directory
)
override fun peerNpm(name: String, version: String): NpmDependency =
NpmDependency(
project = project,
name = name,
version = version,
scope = NpmDependency.Scope.PEER
)
override fun peerNpm(name: String, directory: File): NpmDependency {
check(directory.isDirectory) {
"Dependency on local path should point on directory but $directory found"
}
return peerNpm(
name = name,
version = fileVersion(directory)
)
}
override fun peerNpm(directory: File): NpmDependency =
peerNpm(
name = moduleName(directory),
directory = directory
)
}
@@ -92,30 +92,29 @@ 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() {
val dependencies = this.dependencies as ExtensionAware
val npmDependencyExtension: NpmDependencyExtension = object : AbstractNpmDependencyExtension(
dependencies, this, NpmDependency.Scope.NORMAL
) {}
listOf(NpmDependency.Scope.NORMAL, NpmDependency.Scope.DEV, NpmDependency.Scope.PEER).forEach { scope ->
val name = when (scope) {
NpmDependency.Scope.DEV -> NAME_DEV_DEPENDENCIES
NpmDependency.Scope.PEER -> NAME_PEER_DEPENDENCIES
else -> NAME_DEPENDENCIES
}
val devNpmDependencyExtension: NpmDependencyExtension = object : AbstractNpmDependencyExtension(
dependencies, this, NpmDependency.Scope.DEV
) {}
val dependencyExtension: NpmDependencyExtension = object : AbstractNpmDependencyExtension(dependencies, this, scope) {}
dependencies
.extensions
.add(
TypeOf.typeOf<NpmDependencyExtension>(NpmDependencyExtension::class.java),
"npm",
npmDependencyExtension
)
dependencies
.extensions
.add(
TypeOf.typeOf<NpmDependencyExtension>(NpmDependencyExtension::class.java),
name,
dependencyExtension
)
dependencies
.extensions
.add(
TypeOf.typeOf<NpmDependencyExtension>(NpmDependencyExtension::class.java),
"devNpm",
devNpmDependencyExtension
)
}
}