[Gradle] Move KotlinHierarchyTemplate.Templates.default into -api module

^KT-58676 Verification Pending
This commit is contained in:
Sebastian Sellmair
2023-06-22 09:16:16 +02:00
committed by Space Team
parent 2a4f9b19f0
commit 1cd8089e92
11 changed files with 102 additions and 117 deletions
@@ -971,6 +971,7 @@ public abstract interface class org/jetbrains/kotlin/gradle/plugin/KotlinHierarc
}
public final class org/jetbrains/kotlin/gradle/plugin/KotlinHierarchyTemplate$Templates {
public final fun getDefault ()Lorg/jetbrains/kotlin/gradle/plugin/KotlinHierarchyTemplate;
}
public final class org/jetbrains/kotlin/gradle/plugin/KotlinHierarchyTemplateKt {
@@ -9,9 +9,54 @@ import org.jetbrains.kotlin.gradle.ExperimentalKotlinGradlePluginApi
import org.jetbrains.kotlin.gradle.InternalKotlinGradlePluginApi
sealed interface KotlinHierarchyTemplate {
companion object Templates
companion object Templates {
/**
* Set's up a 'natural'/'default' hierarchy within [KotlinTarget]'s, inside the project.
*
* #### Example 1
*
* ```kotlin
* kotlin {
* applyDefaultHierarchyTemplate() // <- position of this call is not relevant!
*
* iosX64()
* iosArm64()
* linuxX64()
* linuxArm64()
* }
* ```
*
* Will create the following SourceSets:
* `[iosMain, iosTest, appleMain, appleTest, linuxMain, linuxTest, nativeMain, nativeTest]
*
*
* Hierarchy:
* ```
* common
* |
* +-----------------+-------------------+
* | |
*
* native ...
*
* |
* |
* |
* +----------------------+--------------------+-----------------------+
* | | | |
*
* apple linux mingw androidNative
*
* |
* +-----------+------------+------------+
* | | | |
*
* macos ios tvos watchos
* ```
*/
val default get() = defaultKotlinHierarchyTemplate
}
}
/*
@@ -20,7 +65,7 @@ EXPERIMENTAL API
@ExperimentalKotlinGradlePluginApi
fun KotlinHierarchyTemplate(
describe: KotlinHierarchyBuilder.Root.() -> Unit
describe: KotlinHierarchyBuilder.Root.() -> Unit,
): KotlinHierarchyTemplate {
return KotlinHierarchyTemplateImpl(describe)
}
@@ -55,9 +100,60 @@ internal interface InternalKotlinHierarchyTemplate : KotlinHierarchyTemplate {
@OptIn(ExperimentalKotlinGradlePluginApi::class)
internal class KotlinHierarchyTemplateImpl(
private val describe: KotlinHierarchyBuilder.Root.() -> Unit
private val describe: KotlinHierarchyBuilder.Root.() -> Unit,
) : InternalKotlinHierarchyTemplate {
override fun layout(builder: KotlinHierarchyBuilder.Root) {
describe(builder)
}
}
/*
Default Hierarchy Template Implementation
*/
@OptIn(ExperimentalKotlinGradlePluginApi::class)
private val defaultKotlinHierarchyTemplate = KotlinHierarchyTemplate {
/* natural hierarchy is only applied to default 'main'/'test' compilations (by default) */
withSourceSetTree(KotlinSourceSetTree.main, KotlinSourceSetTree.test)
common {
/* All compilations shall be added to the common group by default */
withCompilations { true }
group("native") {
withNative()
group("apple") {
withApple()
group("ios") {
withIos()
}
group("tvos") {
withTvos()
}
group("watchos") {
withWatchos()
}
group("macos") {
withMacos()
}
}
group("linux") {
withLinux()
}
group("mingw") {
withMingw()
}
group("androidNative") {
withAndroidNative()
}
}
}
}