mirror of
https://github.com/TeamMidnightDust/MidnightLib.git
synced 2025-12-16 17:25:09 +01:00
- This will allow us to build the library for different Minecraft versions at the same time - Right now, only Fabric and Neoforge 1.21.10 are fully working - As a bonus, the jar is now even smaller!
33 lines
1.5 KiB
Kotlin
33 lines
1.5 KiB
Kotlin
import org.gradle.api.Project
|
|
import org.gradle.api.artifacts.dsl.RepositoryHandler
|
|
import org.gradle.kotlin.dsl.expand
|
|
import org.gradle.kotlin.dsl.maven
|
|
import org.gradle.language.jvm.tasks.ProcessResources
|
|
import java.util.*
|
|
|
|
val Project.mod: ModData get() = ModData(this)
|
|
fun Project.prop(key: String): String? = findProperty(key)?.toString()
|
|
fun String.upperCaseFirst() = replaceFirstChar { if (it.isLowerCase()) it.uppercaseChar() else it }
|
|
|
|
fun RepositoryHandler.strictMaven(url: String, alias: String, vararg groups: String) = exclusiveContent {
|
|
forRepository { maven(url) { name = alias } }
|
|
filter { groups.forEach(::includeGroup) }
|
|
}
|
|
|
|
fun ProcessResources.properties(files: Iterable<String>, vararg properties: Pair<String, Any>) {
|
|
for ((name, value) in properties) inputs.property(name, value)
|
|
filesMatching(files) {
|
|
expand(properties.toMap())
|
|
}
|
|
}
|
|
|
|
@JvmInline
|
|
value class ModData(private val project: Project) {
|
|
val id: String get() = requireNotNull(project.prop("mod.id")) { "Missing 'mod.id'" }
|
|
val name: String get() = requireNotNull(project.prop("mod.name")) { "Missing 'mod.name'" }
|
|
val version: String get() = requireNotNull(project.prop("mod.version")) { "Missing 'mod.version'" }
|
|
val group: String get() = requireNotNull(project.prop("mod.group")) { "Missing 'mod.group'" }
|
|
|
|
fun prop(key: String) = requireNotNull(project.prop("mod.$key")) { "Missing 'mod.$key'" }
|
|
fun dep(key: String) = requireNotNull(project.prop("deps.$key")) { "Missing 'deps.$key'" }
|
|
} |