import org.gradle.api.NamedDomainObjectContainer import org.gradle.api.Project import org.gradle.api.plugins.JavaPluginExtension import org.gradle.api.provider.Provider import org.gradle.jvm.toolchain.JavaLanguageVersion import org.gradle.kotlin.dsl.getByType import org.jetbrains.kotlin.gradle.plugin.KotlinSourceSet enum class OS { WINDOWS, LINUX, MAC, OTHER } fun getCurrentOs(): OS { val osName = System .getProperty("os.name") .lowercase() .trim() return when { osName.startsWith("win") -> OS.WINDOWS osName.startsWith("mac") -> OS.MAC osName == "linux" -> OS.LINUX else -> OS.OTHER } } val Project.java: JavaPluginExtension get() = extensions.getByType() fun Project.setJavaLanguageVersion( version: Provider ): JavaLanguageVersion = version.get().let { vs -> JavaLanguageVersion.of(vs) }.also { jlv -> java.toolchain.languageVersion.set(jlv) } fun NamedDomainObjectContainer.getOrCreate( name: String ): KotlinSourceSet = findByName(name) ?: create(name) //fun Project.kotlinSourceSets( // config: Action> //) = kotlin.sourceSets.configure(config) //fun NamedDomainObjectContainer.getOrCreate( // name: String //): KotlinSourceSet = findByName(name) ?: create(name) //fun NamedDomainObjectContainer.desktopMain( // block: KotlinSourceSet.() -> Unit = {} //): KotlinSourceSet = getOrCreate("desktopMain").apply(block) // todo //@Suppress("UNUSED_PARAMETER", "UnusedReceiverParameter") //fun Project.wasm(config: DesktopExtension.() -> Unit) { // // todo //// compose.wasmJs(config) //} // todo //fun Project.kotlinSourceSets( // config: Action> //) = with(kotlin) { // sourceSets(config) //}