package io.gitlab.jfronny.lom.ext import net.fabricmc.loom.api.LoomGradleExtensionAPI import net.fabricmc.loom.task.GenerateSourcesTask import net.fabricmc.loom.task.RemapJarTask import net.fabricmc.loom.task.RemapSourcesJarTask import net.fabricmc.loom.task.UnpickJarTask import org.gradle.api.Action import org.gradle.api.DefaultTask import org.gradle.api.Project import org.gradle.api.artifacts.dsl.DependencyHandler import org.gradle.api.tasks.SourceSet import org.gradle.api.tasks.SourceSetContainer import org.gradle.api.tasks.TaskContainer import org.gradle.kotlin.dsl.named val Project.loom: LoomGradleExtensionAPI get() = extensions.getByName("loom") as LoomGradleExtensionAPI fun Project.loom(configure: Action) = extensions.configure("loom", configure) fun DependencyHandler.minecraft(dependencyNotation: Any) = add("minecraft", dependencyNotation) fun DependencyHandler.mappings(dependencyNotation: Any) = add("mappings", dependencyNotation) fun DependencyHandler.modImplementation(dependencyNotation: Any) = add("modImplementation", dependencyNotation) fun DependencyHandler.testmodImplementation(dependencyNotation: Any) = add("testmodImplementation", dependencyNotation) fun DependencyHandler.clientImplementation(dependencyNotation: Any) = add("clientImplementation", dependencyNotation) val SourceSetContainer.main: SourceSet get() = named("main").get() fun SourceSetContainer.main(configure: Action) = configure.execute(this.main) val SourceSetContainer.client: SourceSet get() = named("client").get() fun SourceSetContainer.client(configure: Action) = configure.execute(this.client) val SourceSetContainer.testmod: SourceSet get() = named("testmod").get() fun SourceSetContainer.testmod(configure: Action) = configure.execute(this.testmod) fun TaskContainer.remapJar(configure: RemapJarTask.() -> Unit) = named("remapJar").configure(configure) val TaskContainer.remapSourcesJar: RemapSourcesJarTask get() = named("remapSourcesJar").get() val TaskContainer.genClientOnlySources: DefaultTask get() = named("genClientOnlySources").get() val TaskContainer.genCommonSources: DefaultTask get() = named("genCommonSources").get() val TaskContainer.unpickClientOnlyJar: UnpickJarTask get() = named("unpickClientOnlyJar").get() val TaskContainer.unpickCommonJar: UnpickJarTask get() = named("unpickCommonJar").get()