Files
android-projects/build-logic/convention/src/main/kotlin/ru/shadowsparky/KspExtensions.kt
T
2026-06-17 18:58:41 +03:00

49 lines
1.2 KiB
Kotlin

package ru.shadowsparky
import org.gradle.api.Project
import org.gradle.kotlin.dsl.dependencies
private const val COMMON_MAIN = "kspCommonMainMetadata"
private const val KSP = "ksp"
private const val KSP_ANDROID = "kspAndroid"
private const val KSP_ANDROID_JVM = "kspAndroidJvm"
private const val KSP_WASM_JS = "kspWasmJs"
private const val KSP_JS = "kspJs"
private const val KSP_DESKTOP = "kspDesktop"
private const val KSP_JVM = "kspJvm"
private fun Project.hasConfig(name: String) = configurations.findByName(name) != null
internal fun Project.kspAllPlatforms(deps: Any) {
dependencies {
// common
if (hasConfig(COMMON_MAIN)) {
add(COMMON_MAIN, deps)
} else {
add(KSP, deps)
return@dependencies
}
// android
when {
hasConfig(KSP_ANDROID) -> add(KSP_ANDROID, deps)
hasConfig(KSP_ANDROID_JVM) -> add(KSP_ANDROID_JVM, deps)
}
// web
when {
hasConfig(KSP_WASM_JS) -> add(KSP_WASM_JS, deps)
hasConfig(KSP_JS) -> add(KSP_JS, deps)
}
// desktop
when {
hasConfig(KSP_DESKTOP) -> add(KSP_DESKTOP, deps)
hasConfig(KSP_JVM) -> add(KSP_JVM, deps)
}
}
}