diff --git a/build.gradle.kts b/build.gradle.kts index 8de2b82..5228b23 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -21,7 +21,7 @@ buildscript { allprojects { group = "org.kodein.internal.gradle" - version = "8.5.2" + version = "8.6.0" } repositories { diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index a346b24..0b02a46 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -1,6 +1,6 @@ [versions] # https://docs.gradle.org/current/userguide/compatibility.html#kotlin -kotlin = "1.9.10" +kotlin = "1.9.20" gradle-publishPlugin = "1.2.1" gradle-enterprisePlugin = "3.15.1" diff --git a/src/main/kotlin/org/kodein/internal/gradle/KodeinMppExtension.kt b/src/main/kotlin/org/kodein/internal/gradle/KodeinMppExtension.kt index 6db1993..5864ca1 100644 --- a/src/main/kotlin/org/kodein/internal/gradle/KodeinMppExtension.kt +++ b/src/main/kotlin/org/kodein/internal/gradle/KodeinMppExtension.kt @@ -54,6 +54,18 @@ public open class KodeinMppExtension(internal val kotlin: KotlinMultiplatformExt public fun mainDependencies(configure: KotlinDependencyHandler.() -> Unit) { main.configure { dependencies(configure) } } public fun test(configure: KotlinSourceSet.() -> Unit) { test.configure(configure) } public fun testDependencies(configure: KotlinDependencyHandler.() -> Unit) { test.configure { dependencies(configure) } } + public fun dependsOn(sources: Sources) { + main.configure { dependsOn(sources.main.get()) } + test.configure { dependsOn(sources.test.get()) } + } + public fun dependsOn(target: KodeinTarget) { dependsOn(target.sourceBuilder(target.name)) } + public fun dependsOn(targets: List) { targets.forEach { dependsOn(it) } } + public fun feedsInto(sources: Sources) { + sources.main.configure { dependsOn(main.get()) } + sources.test.configure { dependsOn(test.get()) } + } + public fun feedsInto(target: KodeinTarget) { feedsInto(target.sourceBuilder(target.name)) } + public fun feedsInto(targets: List) { targets.forEach { feedsInto(it) } } } public val common: Sources get() = Sources("common") @@ -207,8 +219,8 @@ public open class KodeinMppExtension(internal val kotlin: KotlinMultiplatformExt public open val all: List get() = allNative + jvm + js + allWasm - public open val allComposeStable: List get() = allDesktop + allIos + allTvos + allWatchosNoDevice + jvm + js - public val allComposeExperimental: List get() = allComposeStable + wasmJs + public open val allComposeUi: List get() = allIos + jvm + wasmJs + public open val allComposeRuntime: List get() = allComposeUi + js + allDesktop + allTvos + allWatchosNoDevice public open val allTestable: List get() = allDesktop + iosX64 + iosSimulatorArm64 + tvosX64 + tvosSimulatorArm64 + watchosX64 + watchosSimulatorArm64 + jvm + js } @@ -329,8 +341,14 @@ public open class KodeinMppExtension(internal val kotlin: KotlinMultiplatformExt public fun all(configure: KodeinTargetBuilder.() -> Unit = {}): Unit = addAll(targets.all) { configure() } - public fun allComposeExperimental(configure: KodeinTargetBuilder.() -> Unit = {}): Unit = addAll(targets.allComposeExperimental) { configure() } - public fun allComposeStable(configure: KodeinTargetBuilder.() -> Unit = {}): Unit = addAll(targets.allComposeStable) { configure() } + public fun allComposeUi(configure: KodeinTargetBuilder.() -> Unit = {}): Unit = addAll(targets.allComposeUi) { configure() } + public fun allComposeRuntime(configure: KodeinTargetBuilder.() -> Unit = {}): Unit = addAll(targets.allComposeRuntime) { configure() } public fun allTestable(configure: KodeinTargetBuilder.() -> Unit = {}): Unit = addAll(targets.allTestable) { configure() } + + public fun createSources(name: String, configure: Sources.() -> Unit = {}): Sources { + val main = kotlin.sourceSets.create(name + "Main") + kotlin.sourceSets.create(name + "Test") { } + return Sources(name).apply(configure) + } } diff --git a/src/main/kotlin/org/kodein/internal/gradle/KodeinMppWithAndroidExtension.kt b/src/main/kotlin/org/kodein/internal/gradle/KodeinMppWithAndroidExtension.kt index f6aa6b8..84b4ff1 100644 --- a/src/main/kotlin/org/kodein/internal/gradle/KodeinMppWithAndroidExtension.kt +++ b/src/main/kotlin/org/kodein/internal/gradle/KodeinMppWithAndroidExtension.kt @@ -28,7 +28,7 @@ public class KodeinMppWithAndroidExtension(kotlin: KotlinMultiplatformExtension) } override val all: List get() = super.all + android - override val allComposeStable: List get() = super.allComposeStable + android + override val allComposeUi: List get() = super.allComposeUi + android override val allTestable: List get() = super.allTestable + android }