[Gradle, JS] generateKotlinExternals option in dsl functions

KT-38331
This commit is contained in:
Ilya Goncharov
2020-05-07 15:43:32 +03:00
parent c20184ae08
commit 830555aa8b
3 changed files with 162 additions and 38 deletions
@@ -12,23 +12,108 @@ interface KotlinNpmDependencyHandler {
@Deprecated("Declaring NPM dependency without version is forbidden")
fun npm(name: String): Dependency
fun npm(name: String, version: String): Dependency
fun npm(
name: String,
version: String,
generateKotlinExternals: Boolean
): Dependency
fun npm(name: String, directory: File): Dependency
fun npm(
name: String,
version: String
): Dependency = npm(
name = name,
version = version,
generateKotlinExternals = DEFAULT_GENERATE_KOTLIN_EXTERNALS
)
fun npm(directory: File): Dependency
fun npm(
name: String,
directory: File,
generateKotlinExternals: Boolean
): Dependency
fun devNpm(name: String, version: String): Dependency
fun npm(
name: String,
directory: File
): Dependency = npm(
name = name,
directory = directory,
generateKotlinExternals = DEFAULT_GENERATE_KOTLIN_EXTERNALS
)
fun devNpm(name: String, directory: File): Dependency
fun npm(
directory: File,
generateKotlinExternals: Boolean
): Dependency
fun devNpm(directory: File): Dependency
fun npm(
directory: File
): Dependency = npm(
directory = directory,
generateKotlinExternals = DEFAULT_GENERATE_KOTLIN_EXTERNALS
)
fun optionalNpm(name: String, version: String): Dependency
fun devNpm(
name: String,
version: String
): Dependency
fun optionalNpm(name: String, directory: File): Dependency
fun devNpm(
name: String,
directory: File
): Dependency
fun optionalNpm(directory: File): Dependency
fun devNpm(
directory: File
): Dependency
fun peerNpm(name: String, version: String): Dependency
}
fun optionalNpm(
name: String,
version: String,
generateKotlinExternals: Boolean
): Dependency
fun optionalNpm(
name: String,
version: String
): Dependency = optionalNpm(
name = name,
version = version,
generateKotlinExternals = DEFAULT_GENERATE_KOTLIN_EXTERNALS
)
fun optionalNpm(
name: String,
directory: File,
generateKotlinExternals: Boolean
): Dependency
fun optionalNpm(
name: String,
directory: File
): Dependency = optionalNpm(
name = name,
directory = directory,
generateKotlinExternals = DEFAULT_GENERATE_KOTLIN_EXTERNALS
)
fun optionalNpm(
directory: File,
generateKotlinExternals: Boolean
): Dependency
fun optionalNpm(
directory: File
): Dependency = optionalNpm(
directory = directory,
generateKotlinExternals = DEFAULT_GENERATE_KOTLIN_EXTERNALS
)
fun peerNpm(
name: String,
version: String
): Dependency
}
const val DEFAULT_GENERATE_KOTLIN_EXTERNALS = true
@@ -91,27 +91,44 @@ class DefaultKotlinDependencyHandler(
override fun npm(name: String): Dependency =
onlyNameNpmDependency(name)
override fun npm(name: String, version: String): NpmDependency =
override fun npm(
name: String,
version: String,
generateKotlinExternals: Boolean
): NpmDependency =
NpmDependency(
project = project,
name = name,
version = version
version = version,
generateKotlinExternals = generateKotlinExternals
)
override fun npm(name: String, directory: File): NpmDependency =
override fun npm(
name: String,
directory: File,
generateKotlinExternals: Boolean
): NpmDependency =
directoryNpmDependency(
name,
directory,
NpmDependency.Scope.NORMAL
name = name,
directory = directory,
scope = NpmDependency.Scope.NORMAL,
generateKotlinExternals = generateKotlinExternals
)
override fun npm(directory: File): NpmDependency =
override fun npm(
directory: File,
generateKotlinExternals: Boolean
): NpmDependency =
npm(
name = moduleName(directory),
directory = directory
directory = directory,
generateKotlinExternals = generateKotlinExternals
)
override fun devNpm(name: String, version: String): NpmDependency =
override fun devNpm(
name: String,
version: String
): NpmDependency =
NpmDependency(
project = project,
name = name,
@@ -121,9 +138,10 @@ class DefaultKotlinDependencyHandler(
override fun devNpm(name: String, directory: File): NpmDependency =
directoryNpmDependency(
name,
directory,
NpmDependency.Scope.DEV
name = name,
directory = directory,
scope = NpmDependency.Scope.DEV,
generateKotlinExternals = false
)
override fun devNpm(directory: File): NpmDependency =
@@ -132,28 +150,45 @@ class DefaultKotlinDependencyHandler(
directory = directory
)
override fun optionalNpm(name: String, version: String): NpmDependency =
override fun optionalNpm(
name: String,
version: String,
generateKotlinExternals: Boolean
): NpmDependency =
NpmDependency(
project = project,
name = name,
version = version,
scope = NpmDependency.Scope.OPTIONAL
scope = NpmDependency.Scope.OPTIONAL,
generateKotlinExternals = generateKotlinExternals
)
override fun optionalNpm(name: String, directory: File): NpmDependency =
override fun optionalNpm(
name: String,
directory: File,
generateKotlinExternals: Boolean
): NpmDependency =
directoryNpmDependency(
name,
directory,
NpmDependency.Scope.OPTIONAL
NpmDependency.Scope.OPTIONAL,
generateKotlinExternals = generateKotlinExternals
)
override fun optionalNpm(directory: File): NpmDependency =
override fun optionalNpm(
directory: File,
generateKotlinExternals: Boolean
): NpmDependency =
optionalNpm(
name = moduleName(directory),
directory = directory
directory = directory,
generateKotlinExternals = generateKotlinExternals
)
override fun peerNpm(name: String, version: String): NpmDependency =
override fun peerNpm(
name: String,
version: String
): NpmDependency =
NpmDependency(
project = project,
name = name,
@@ -164,12 +199,14 @@ class DefaultKotlinDependencyHandler(
private fun directoryNpmDependency(
name: String,
directory: File,
scope: NpmDependency.Scope
scope: NpmDependency.Scope,
generateKotlinExternals: Boolean
): NpmDependency =
directoryNpmDependency(
project,
name,
directory,
scope
project = project,
name = name,
directory = directory,
scope = scope,
generateKotlinExternals = generateKotlinExternals
)
}
@@ -25,7 +25,7 @@ data class NpmDependency(
private val name: String,
private val version: String,
val scope: Scope = Scope.NORMAL,
val generateKotlinExternals: Boolean = true
val generateKotlinExternals: Boolean = false
) : SelfResolvingDependency,
SelfResolvingDependencyInternal,
ResolvableDependency,
@@ -132,7 +132,8 @@ internal fun directoryNpmDependency(
project: Project,
name: String,
directory: File,
scope: NpmDependency.Scope
scope: NpmDependency.Scope,
generateKotlinExternals: Boolean
): NpmDependency {
check(directory.isDirectory) {
"Dependency on local path should point on directory but $directory found"
@@ -142,7 +143,8 @@ internal fun directoryNpmDependency(
project = project,
name = name,
version = fileVersion(directory),
scope = scope
scope = scope,
generateKotlinExternals = generateKotlinExternals
)
}