[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.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.utils.lowerCamelCaseName
|
||||
import org.jetbrains.kotlin.tooling.core.withClosure
|
||||
@@ -27,12 +28,8 @@ internal data class KotlinTargetHierarchy(
|
||||
|
||||
data class Group(val name: String) : Node() {
|
||||
override fun sharedSourceSetName(compilation: KotlinCompilation<*>): String? {
|
||||
val suffix = when (compilation) {
|
||||
is KotlinJvmAndroidCompilation -> compilation.androidVariant.type.androidBaseSourceSetName?.name
|
||||
else -> compilation.name
|
||||
} ?: return null
|
||||
|
||||
return lowerCamelCaseName(name, suffix)
|
||||
val moduleName = Module.orNull(compilation)?.name ?: return null
|
||||
return lowerCamelCaseName(name, moduleName)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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 {
|
||||
if (children.isEmpty()) return node.toString()
|
||||
return node.toString() + "\n" + children.joinToString("\n").prependIndent("----")
|
||||
|
||||
+6
-15
@@ -5,21 +5,18 @@
|
||||
|
||||
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.mpp.KotlinJvmAndroidCompilation
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.isMain
|
||||
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
|
||||
|
||||
private val naturalKotlinTargetHierarchyModules = hashSetOf(KotlinTargetHierarchy.Module.main, KotlinTargetHierarchy.Module.test)
|
||||
|
||||
internal val naturalKotlinTargetHierarchy = KotlinTargetHierarchyDescriptor {
|
||||
/* natural hierarchy is only applied to default 'main'/'test' compilations (by default) */
|
||||
filterCompilations { compilation ->
|
||||
compilation.isMain() || compilation.isTest() || compilation.isAndroidMain() || compilation.isAndroidUnitTest()
|
||||
}
|
||||
withoutCompilations { KotlinTargetHierarchy.Module.orNull(it) !in naturalKotlinTargetHierarchyModules }
|
||||
|
||||
common {
|
||||
/* All compilations shall receive be added to the common group by default */
|
||||
withCompilations { true }
|
||||
|
||||
group("native") {
|
||||
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