arrow-kt libraries bundled for Minecraft
at main 4.6 kB view raw
1import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar 2import earth.terrarium.cloche.api.target.ForgeLikeTarget 3import org.gradle.kotlin.dsl.configure 4import org.gradle.kotlin.dsl.invoke 5import org.jetbrains.kotlin.gradle.dsl.KotlinProjectExtension 6 7plugins { 8 id("maven-publish") 9 alias(libs.plugins.cloche) 10 kotlin("jvm") version libs.versions.kotlin 11 id("com.gradleup.shadow") version libs.versions.shadow 12} 13 14 15 16val modGroup = "xyz.naomieow" 17group = modGroup 18val modVersion = "2.1.2" 19version = modVersion 20 21repositories { 22 cloche { 23 main() 24 mavenForge() 25 mavenFabric() 26 mavenNeoforged() 27 librariesMinecraft() 28 mavenNeoforgedMeta() 29 } 30} 31 32 33val libraries = listOf( 34 libs.arrow.core, 35 libs.arrow.annotations, 36 libs.arrow.fx.coroutines, 37 libs.arrow.autoclose, 38 libs.arrow.resilience, 39 libs.arrow.optics, 40 libs.arrow.fx.stm, 41 libs.arrow.collectors, 42 libs.arrow.eval, 43 libs.arrow.functions, 44 libs.arrow.atomic, 45 libs.arrow.serialization, 46) 47 48val shadowArrow: Configuration by configurations.creating { 49 isTransitive = false 50} 51 52dependencies { 53 libraries.forEach { 54 shadowArrow(it) 55 } 56} 57 58cloche { 59 metadata { 60 modId = "marrow" 61 name = "Marrow" 62 description = "Arrow Kotlin modules for Minecraft" 63 license = "Apache-2.0" 64 icon = "assets/marrow/icon.png" 65 url = "https://tangled.sh/@lesbian.skin/marrow" 66 sources = "https://tangled.sh/@lesbian.skin/marrow" 67 issues = "https://tangled.sh/@lesbian.skin/issues" 68 69 author("Naomi Roberts") 70 } 71 72 common { 73 dependencies { 74 libraries.forEach { 75 api(it) 76 } 77 } 78 } 79 80 fabric { 81 minecraftVersion = "1.20.1" 82 loaderVersion = libs.versions.fabric.loader 83 84 dependencies { 85 libraries.forEach { 86 include(it) 87 } 88 } 89 90 metadata { 91 custom("modmenu", mapOf( 92 "badges" to listOf("library") 93 )) 94 } 95 } 96 97 forge { 98 minecraftVersion = "1.20.1" 99 loaderVersion = libs.versions.forge.loader 100 101 metadata { 102 modLoader = "lowcodefml" 103 } 104 } 105 106 neoforge { 107 minecraftVersion = "1.20.4" 108 loaderVersion = libs.versions.neoforge.loader 109 110 metadata { 111 modLoader = "lowcodefml" 112 } 113 } 114 115 targets.withType<ForgeLikeTarget>().all { 116 tasks.register<ShadowJar>("${name}FatJar") { 117 from(zipTree(finalJar)) 118 configurations = listOf(shadowArrow) 119 archiveClassifier = "${this@all.name}-shadowed" 120 } 121 } 122 123 artifacts { 124 targets.withType<ForgeLikeTarget>().all { 125 archives(tasks.named("${name}FatJar")) 126 } 127 } 128} 129 130publishing { 131 publications { 132 create<MavenPublication>("maven") { 133 groupId = modGroup 134 version = modVersion 135 136 from(components["java"]) 137 } 138 } 139 140 repositories { 141 mavenLocal() 142 143 val username = "GAY_MAVEN_USERNAME".let { System.getenv(it) ?: findProperty(it) }?.toString() 144 val password = "GAY_MAVEN_PASSWORD".let { System.getenv(it) ?: findProperty(it) }?.toString() 145 146 if (username != null && password != null) { 147 maven("https://maven.is-immensely.gay/nightly") { 148 name = "gayNightly" 149 credentials { 150 this.username = username 151 this.password = password 152 } 153 } 154 155 maven("https://maven.is-immensely.gay/releases") { 156 name = "gayReleases" 157 credentials { 158 this.username = username 159 this.password = password 160 } 161 } 162 } else { 163 println("Gay Maven credentials not found.") 164 } 165 } 166} 167 168configure<KotlinProjectExtension> { 169 jvmToolchain(17) 170} 171 172subprojects { 173 apply(plugin = "earth.terrarium.cloche") 174 apply(plugin = "org.jetbrains.kotlin.jvm") 175 176 repositories { 177 cloche { 178 mavenLocal() 179 mavenCentral() 180 main() 181 mavenForge() 182 mavenFabric() 183 mavenNeoforged() 184 librariesMinecraft() 185 mavenNeoforgedMeta() 186 } 187 maven("https://thedarkcolour.github.io/KotlinForForge/") 188 maven("https://maven.terraformersmc.com/") 189 maven("https://pkgs.dev.azure.com/djtheredstoner/DevAuth/_packaging/public/maven/v1") 190 } 191 192 configure<KotlinProjectExtension> { 193 jvmToolchain(17) 194 } 195}