[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") @Deprecated("Declaring NPM dependency without version is forbidden")
fun npm(name: String): Dependency 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 = override fun npm(name: String): Dependency =
onlyNameNpmDependency(name) onlyNameNpmDependency(name)
override fun npm(name: String, version: String): NpmDependency = override fun npm(
name: String,
version: String,
generateKotlinExternals: Boolean
): NpmDependency =
NpmDependency( NpmDependency(
project = project, project = project,
name = name, 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( directoryNpmDependency(
name, name = name,
directory, directory = directory,
NpmDependency.Scope.NORMAL scope = NpmDependency.Scope.NORMAL,
generateKotlinExternals = generateKotlinExternals
) )
override fun npm(directory: File): NpmDependency = override fun npm(
directory: File,
generateKotlinExternals: Boolean
): NpmDependency =
npm( npm(
name = moduleName(directory), 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( NpmDependency(
project = project, project = project,
name = name, name = name,
@@ -121,9 +138,10 @@ class DefaultKotlinDependencyHandler(
override fun devNpm(name: String, directory: File): NpmDependency = override fun devNpm(name: String, directory: File): NpmDependency =
directoryNpmDependency( directoryNpmDependency(
name, name = name,
directory, directory = directory,
NpmDependency.Scope.DEV scope = NpmDependency.Scope.DEV,
generateKotlinExternals = false
) )
override fun devNpm(directory: File): NpmDependency = override fun devNpm(directory: File): NpmDependency =
@@ -132,28 +150,45 @@ class DefaultKotlinDependencyHandler(
directory = directory directory = directory
) )
override fun optionalNpm(name: String, version: String): NpmDependency = override fun optionalNpm(
name: String,
version: String,
generateKotlinExternals: Boolean
): NpmDependency =
NpmDependency( NpmDependency(
project = project, project = project,
name = name, name = name,
version = version, 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( directoryNpmDependency(
name, name,
directory, directory,
NpmDependency.Scope.OPTIONAL NpmDependency.Scope.OPTIONAL,
generateKotlinExternals = generateKotlinExternals
) )
override fun optionalNpm(directory: File): NpmDependency = override fun optionalNpm(
directory: File,
generateKotlinExternals: Boolean
): NpmDependency =
optionalNpm( optionalNpm(
name = moduleName(directory), 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( NpmDependency(
project = project, project = project,
name = name, name = name,
@@ -164,12 +199,14 @@ class DefaultKotlinDependencyHandler(
private fun directoryNpmDependency( private fun directoryNpmDependency(
name: String, name: String,
directory: File, directory: File,
scope: NpmDependency.Scope scope: NpmDependency.Scope,
generateKotlinExternals: Boolean
): NpmDependency = ): NpmDependency =
directoryNpmDependency( directoryNpmDependency(
project, project = project,
name, name = name,
directory, directory = directory,
scope scope = scope,
generateKotlinExternals = generateKotlinExternals
) )
} }
@@ -25,7 +25,7 @@ data class NpmDependency(
private val name: String, private val name: String,
private val version: String, private val version: String,
val scope: Scope = Scope.NORMAL, val scope: Scope = Scope.NORMAL,
val generateKotlinExternals: Boolean = true val generateKotlinExternals: Boolean = false
) : SelfResolvingDependency, ) : SelfResolvingDependency,
SelfResolvingDependencyInternal, SelfResolvingDependencyInternal,
ResolvableDependency, ResolvableDependency,
@@ -132,7 +132,8 @@ internal fun directoryNpmDependency(
project: Project, project: Project,
name: String, name: String,
directory: File, directory: File,
scope: NpmDependency.Scope scope: NpmDependency.Scope,
generateKotlinExternals: Boolean
): NpmDependency { ): NpmDependency {
check(directory.isDirectory) { check(directory.isDirectory) {
"Dependency on local path should point on directory but $directory found" "Dependency on local path should point on directory but $directory found"
@@ -142,7 +143,8 @@ internal fun directoryNpmDependency(
project = project, project = project,
name = name, name = name,
version = fileVersion(directory), version = fileVersion(directory),
scope = scope scope = scope,
generateKotlinExternals = generateKotlinExternals
) )
} }