[Gradle] Introduce KotlinTargetHierarchy.ModuleName as public concept
KT-34662
This commit is contained in:
committed by
Space Team
parent
78673885e5
commit
78751dcb55
+3
-3
@@ -14,7 +14,7 @@ import org.jetbrains.kotlin.gradle.plugin.KotlinTargetHierarchyDescriptor
|
||||
interface KotlinTargetHierarchyDsl {
|
||||
fun apply(
|
||||
hierarchyDescriptor: KotlinTargetHierarchyDescriptor,
|
||||
describeExtension: (KotlinTargetHierarchyBuilder.() -> Unit)? = null
|
||||
describeExtension: (KotlinTargetHierarchyBuilder.Root.() -> Unit)? = null
|
||||
)
|
||||
|
||||
/**
|
||||
@@ -80,6 +80,6 @@ interface KotlinTargetHierarchyDsl {
|
||||
* @param describeExtension: Additional groups can be described to extend the 'default'/'natural' hierarchy:
|
||||
* @see KotlinTargetHierarchyDescriptor.extend
|
||||
*/
|
||||
fun default(describeExtension: (KotlinTargetHierarchyBuilder.() -> Unit)? = null)
|
||||
fun custom(describe: KotlinTargetHierarchyBuilder.() -> Unit)
|
||||
fun default(describeExtension: (KotlinTargetHierarchyBuilder.Root.() -> Unit)? = null)
|
||||
fun custom(describe: KotlinTargetHierarchyBuilder.Root.() -> Unit)
|
||||
}
|
||||
|
||||
+21
@@ -0,0 +1,21 @@
|
||||
/*
|
||||
* Copyright 2010-2023 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
||||
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
||||
*/
|
||||
|
||||
package org.jetbrains.kotlin.gradle.plugin
|
||||
|
||||
interface KotlinTargetHierarchy {
|
||||
|
||||
data class ModuleName(val name: String) {
|
||||
override fun toString(): String = name
|
||||
|
||||
companion object {
|
||||
val main = ModuleName("main")
|
||||
val test = ModuleName("test")
|
||||
val unitTest = ModuleName("unitTest")
|
||||
val integrationTest = ModuleName("integrationTest")
|
||||
val instrumentedTest = ModuleName("instrumentedTest")
|
||||
}
|
||||
}
|
||||
}
|
||||
+13
-2
@@ -8,16 +8,27 @@ import org.jetbrains.kotlin.konan.target.DEPRECATED_TARGET_MESSAGE
|
||||
@KotlinTargetsDsl
|
||||
@ExperimentalKotlinGradlePluginApi
|
||||
interface KotlinTargetHierarchyBuilder {
|
||||
|
||||
interface Root : KotlinTargetHierarchyBuilder {
|
||||
fun modules(vararg module: KotlinTargetHierarchy.ModuleName)
|
||||
fun withModule(vararg module: KotlinTargetHierarchy.ModuleName)
|
||||
fun excludeModule(vararg module: KotlinTargetHierarchy.ModuleName)
|
||||
}
|
||||
|
||||
/* Declaring groups */
|
||||
fun common(build: KotlinTargetHierarchyBuilder.() -> Unit) = group("common", build)
|
||||
fun group(name: String, build: KotlinTargetHierarchyBuilder.() -> Unit = {})
|
||||
|
||||
/* low-level APIs */
|
||||
fun withCompilations(predicate: suspend (KotlinCompilation<*>) -> Boolean)
|
||||
fun withoutCompilations(predicate: suspend (KotlinCompilation<*>) -> Boolean)
|
||||
|
||||
fun excludeCompilations(predicate: suspend (KotlinCompilation<*>) -> Boolean)
|
||||
|
||||
@Deprecated("Use 'excludeCompilations' instead", ReplaceWith("excludeCompilations(predicate)"))
|
||||
fun withoutCompilations(predicate: suspend (KotlinCompilation<*>) -> Boolean) = excludeCompilations(predicate)
|
||||
|
||||
@Deprecated("Use plain 'withoutCompilations(!predicate) instead'", ReplaceWith("withoutCompilations { !predicate(it) }"))
|
||||
fun filterCompilations(predicate: (KotlinCompilation<*>) -> Boolean) = withoutCompilations { !predicate(it) }
|
||||
fun filterCompilations(predicate: (KotlinCompilation<*>) -> Boolean) = excludeCompilations { !predicate(it) }
|
||||
|
||||
/* Convenient groups */
|
||||
fun withNative()
|
||||
|
||||
+6
-6
@@ -9,23 +9,23 @@ import org.jetbrains.kotlin.gradle.ExperimentalKotlinGradlePluginApi
|
||||
|
||||
@ExperimentalKotlinGradlePluginApi
|
||||
interface KotlinTargetHierarchyDescriptor {
|
||||
fun describe(builder: KotlinTargetHierarchyBuilder)
|
||||
fun extend(describe: KotlinTargetHierarchyBuilder.() -> Unit): KotlinTargetHierarchyDescriptor
|
||||
fun describe(builder: KotlinTargetHierarchyBuilder.Root)
|
||||
fun extend(describe: KotlinTargetHierarchyBuilder.Root.() -> Unit): KotlinTargetHierarchyDescriptor
|
||||
}
|
||||
|
||||
@ExperimentalKotlinGradlePluginApi
|
||||
fun KotlinTargetHierarchyDescriptor(
|
||||
describe: KotlinTargetHierarchyBuilder.() -> Unit
|
||||
describe: KotlinTargetHierarchyBuilder.Root.() -> Unit
|
||||
): KotlinTargetHierarchyDescriptor {
|
||||
return KotlinTargetHierarchyDescriptorImpl(describe)
|
||||
}
|
||||
|
||||
@ExperimentalKotlinGradlePluginApi
|
||||
private class KotlinTargetHierarchyDescriptorImpl(
|
||||
private val describe: KotlinTargetHierarchyBuilder.() -> Unit
|
||||
private val describe: KotlinTargetHierarchyBuilder.Root.() -> Unit
|
||||
) : KotlinTargetHierarchyDescriptor {
|
||||
|
||||
override fun extend(describe: KotlinTargetHierarchyBuilder.() -> Unit): KotlinTargetHierarchyDescriptor {
|
||||
override fun extend(describe: KotlinTargetHierarchyBuilder.Root.() -> Unit): KotlinTargetHierarchyDescriptor {
|
||||
val sourceDescribe = this.describe
|
||||
return KotlinTargetHierarchyDescriptor {
|
||||
sourceDescribe()
|
||||
@@ -33,5 +33,5 @@ private class KotlinTargetHierarchyDescriptorImpl(
|
||||
}
|
||||
}
|
||||
|
||||
override fun describe(builder: KotlinTargetHierarchyBuilder) = builder.describe()
|
||||
override fun describe(builder: KotlinTargetHierarchyBuilder.Root) = builder.describe()
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user