[Gradle] Introduce KotlinTargetHierarchy.Module and let targetHierarchy.default() add default common* refines
KT-34662
This commit is contained in:
committed by
Space Team
parent
0f657b8a74
commit
553639136a
+27
-6
@@ -7,6 +7,7 @@ package org.jetbrains.kotlin.gradle.plugin.mpp.targetHierarchy
|
|||||||
|
|
||||||
import org.jetbrains.kotlin.gradle.plugin.KotlinCompilation
|
import org.jetbrains.kotlin.gradle.plugin.KotlinCompilation
|
||||||
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinJvmAndroidCompilation
|
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinJvmAndroidCompilation
|
||||||
|
import org.jetbrains.kotlin.gradle.plugin.sources.android.AndroidVariantType
|
||||||
import org.jetbrains.kotlin.gradle.plugin.sources.android.type
|
import org.jetbrains.kotlin.gradle.plugin.sources.android.type
|
||||||
import org.jetbrains.kotlin.gradle.utils.lowerCamelCaseName
|
import org.jetbrains.kotlin.gradle.utils.lowerCamelCaseName
|
||||||
import org.jetbrains.kotlin.tooling.core.withClosure
|
import org.jetbrains.kotlin.tooling.core.withClosure
|
||||||
@@ -27,12 +28,8 @@ internal data class KotlinTargetHierarchy(
|
|||||||
|
|
||||||
data class Group(val name: String) : Node() {
|
data class Group(val name: String) : Node() {
|
||||||
override fun sharedSourceSetName(compilation: KotlinCompilation<*>): String? {
|
override fun sharedSourceSetName(compilation: KotlinCompilation<*>): String? {
|
||||||
val suffix = when (compilation) {
|
val moduleName = Module.orNull(compilation)?.name ?: return null
|
||||||
is KotlinJvmAndroidCompilation -> compilation.androidVariant.type.androidBaseSourceSetName?.name
|
return lowerCamelCaseName(name, moduleName)
|
||||||
else -> compilation.name
|
|
||||||
} ?: return null
|
|
||||||
|
|
||||||
return lowerCamelCaseName(name, suffix)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -42,6 +39,30 @@ internal data class KotlinTargetHierarchy(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
data class Module(val name: String) {
|
||||||
|
override fun toString(): String = name
|
||||||
|
|
||||||
|
companion object {
|
||||||
|
val main = Module("main")
|
||||||
|
val test = Module("test")
|
||||||
|
private val instrumentedTest = Module("instrumentedTest")
|
||||||
|
|
||||||
|
fun orNull(compilation: KotlinCompilation<*>): Module? = when (compilation) {
|
||||||
|
is KotlinJvmAndroidCompilation -> when (compilation.androidVariant.type) {
|
||||||
|
AndroidVariantType.Main -> main
|
||||||
|
AndroidVariantType.UnitTest -> test
|
||||||
|
AndroidVariantType.InstrumentedTest -> instrumentedTest
|
||||||
|
AndroidVariantType.Unknown -> null
|
||||||
|
}
|
||||||
|
else -> when (compilation.name) {
|
||||||
|
"main" -> main
|
||||||
|
"test" -> test
|
||||||
|
else -> Module(compilation.name)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
override fun toString(): String {
|
override fun toString(): String {
|
||||||
if (children.isEmpty()) return node.toString()
|
if (children.isEmpty()) return node.toString()
|
||||||
return node.toString() + "\n" + children.joinToString("\n").prependIndent("----")
|
return node.toString() + "\n" + children.joinToString("\n").prependIndent("----")
|
||||||
|
|||||||
+6
-15
@@ -5,21 +5,18 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.gradle.plugin.mpp.targetHierarchy
|
package org.jetbrains.kotlin.gradle.plugin.mpp.targetHierarchy
|
||||||
|
|
||||||
import org.jetbrains.kotlin.gradle.plugin.KotlinCompilation
|
|
||||||
import org.jetbrains.kotlin.gradle.plugin.KotlinTargetHierarchyDescriptor
|
import org.jetbrains.kotlin.gradle.plugin.KotlinTargetHierarchyDescriptor
|
||||||
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinJvmAndroidCompilation
|
|
||||||
import org.jetbrains.kotlin.gradle.plugin.mpp.isMain
|
private val naturalKotlinTargetHierarchyModules = hashSetOf(KotlinTargetHierarchy.Module.main, KotlinTargetHierarchy.Module.test)
|
||||||
import org.jetbrains.kotlin.gradle.plugin.mpp.isTest
|
|
||||||
import org.jetbrains.kotlin.gradle.plugin.sources.android.AndroidVariantType
|
|
||||||
import org.jetbrains.kotlin.gradle.plugin.sources.android.type
|
|
||||||
|
|
||||||
internal val naturalKotlinTargetHierarchy = KotlinTargetHierarchyDescriptor {
|
internal val naturalKotlinTargetHierarchy = KotlinTargetHierarchyDescriptor {
|
||||||
/* natural hierarchy is only applied to default 'main'/'test' compilations (by default) */
|
/* natural hierarchy is only applied to default 'main'/'test' compilations (by default) */
|
||||||
filterCompilations { compilation ->
|
withoutCompilations { KotlinTargetHierarchy.Module.orNull(it) !in naturalKotlinTargetHierarchyModules }
|
||||||
compilation.isMain() || compilation.isTest() || compilation.isAndroidMain() || compilation.isAndroidUnitTest()
|
|
||||||
}
|
|
||||||
|
|
||||||
common {
|
common {
|
||||||
|
/* All compilations shall receive be added to the common group by default */
|
||||||
|
withCompilations { true }
|
||||||
|
|
||||||
group("native") {
|
group("native") {
|
||||||
withNative()
|
withNative()
|
||||||
|
|
||||||
@@ -57,9 +54,3 @@ internal val naturalKotlinTargetHierarchy = KotlinTargetHierarchyDescriptor {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun KotlinCompilation<*>.isAndroidMain(): Boolean =
|
|
||||||
this is KotlinJvmAndroidCompilation && this.androidVariant.type == AndroidVariantType.Main
|
|
||||||
|
|
||||||
private fun KotlinCompilation<*>.isAndroidUnitTest(): Boolean =
|
|
||||||
this is KotlinJvmAndroidCompilation && this.androidVariant.type == AndroidVariantType.UnitTest
|
|
||||||
|
|||||||
Reference in New Issue
Block a user