diff options
author | nea <romangraef@gmail.com> | 2022-09-12 16:12:37 +0200 |
---|---|---|
committer | nea <romangraef@gmail.com> | 2022-10-06 03:01:13 +0200 |
commit | cf992d9ded578a27407ab0e4b9353cdfc52eb682 (patch) | |
tree | 2d9c7b113b4ce83e28f0ffe72af23d94bc938e12 | |
parent | 5f46c65b173d1675b809671dbeecdfbb9f8cc04c (diff) | |
download | NotEnoughUpdates-cf992d9ded578a27407ab0e4b9353cdfc52eb682.tar.gz NotEnoughUpdates-cf992d9ded578a27407ab0e4b9353cdfc52eb682.tar.bz2 NotEnoughUpdates-cf992d9ded578a27407ab0e4b9353cdfc52eb682.zip |
Clean up buildscript
-rw-r--r-- | build.gradle.kts | 83 | ||||
-rw-r--r-- | buildSrc/build.gradle.kts | 26 | ||||
-rw-r--r-- | buildSrc/src/main/kotlin/neubs/buildflags.kt | 56 | ||||
-rw-r--r-- | buildSrc/src/main/kotlin/neubs/publishing.kt | 62 | ||||
-rw-r--r-- | buildSrc/src/main/kotlin/neubs/versioning.kt | 54 |
5 files changed, 228 insertions, 53 deletions
diff --git a/build.gradle.kts b/build.gradle.kts index 409a8d51..566a403a 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -18,12 +18,9 @@ */ -import net.fabricmc.loom.task.RemapJarTask -import java.io.ByteArrayOutputStream -import java.nio.file.FileSystems -import java.nio.file.Files -import java.nio.charset.StandardCharsets -import java.util.* +import neubs.NEUBuildFlags +import neubs.applyPublishingInformation +import neubs.setVersionFromEnvironment plugins { idea @@ -31,42 +28,18 @@ plugins { id("gg.essential.loom") version "0.10.0.+" id("dev.architectury.architectury-pack200") version "0.1.3" id("com.github.johnrengelman.shadow") version "7.1.2" + id("io.github.juuxel.loom-quiltflower") version "1.7.3" + `maven-publish` } +apply<NEUBuildFlags>() + // Build metadata group = "io.github.moulberry" -val baseVersion = "2.1" - - -val buildExtra = mutableListOf<String>() -val buildVersion = properties["BUILD_VERSION"] as? String -if (buildVersion != null) buildExtra.add(buildVersion) -if (properties["CI"] as? String == "true") buildExtra.add("ci") - -val stdout = ByteArrayOutputStream() -val execResult = exec { - commandLine("git", "describe", "--always", "--first-parent", "--abbrev=7") - standardOutput = stdout - isIgnoreExitValue = true -} -if (execResult.exitValue == 0) { - buildExtra.add(String(stdout.toByteArray()).trim()) -} - -val gitDiffStdout = ByteArrayOutputStream() -val gitDiffResult = exec { - commandLine("git", "status", "--porcelain") - standardOutput = gitDiffStdout - isIgnoreExitValue = true -} -if (gitDiffStdout.toByteArray().isNotEmpty()) { - buildExtra.add("dirty") -} - -version = baseVersion + (if (buildExtra.isEmpty()) "" else buildExtra.joinToString(prefix = "+", separator = ".")) +setVersionFromEnvironment("2.1") // Minecraft configuration: loom { @@ -106,6 +79,17 @@ val shadowImplementation by configurations.creating { configurations.implementation.get().extendsFrom(this) } +val shadowApi by configurations.creating { + configurations.implementation.get().extendsFrom(this) +} + +val devEnv by configurations.creating { + configurations.runtimeClasspath.get().extendsFrom(this) + isCanBeResolved = false + isCanBeConsumed = false + isVisible = false +} + dependencies { minecraft("com.mojang:minecraft:1.8.9") mappings("de.oceanlabs.mcp:mcp_stable:22-1.8.9") @@ -115,17 +99,18 @@ dependencies { isTransitive = false // Dependencies of mixin are already bundled by minecraft } annotationProcessor("org.spongepowered:mixin:0.8.4-SNAPSHOT") - shadowImplementation("info.bliki.wiki:bliki-core:3.1.0") + shadowApi("info.bliki.wiki:bliki-core:3.1.0") testImplementation("org.junit.jupiter:junit-jupiter:5.8.2") testAnnotationProcessor("org.spongepowered:mixin:0.8.4-SNAPSHOT") // modImplementation("io.github.notenoughupdates:MoulConfig:0.0.1") - modRuntimeOnly("me.djtheredstoner:DevAuth-forge-legacy:1.1.0") + devEnv("me.djtheredstoner:DevAuth-forge-legacy:1.1.0") } java { + withSourcesJar() toolchain.languageVersion.set(JavaLanguageVersion.of(8)) } @@ -162,7 +147,7 @@ val remapJar by tasks.named<net.fabricmc.loom.task.RemapJarTask>("remapJar") { tasks.shadowJar { archiveClassifier.set("dep-dev") - configurations = listOf(shadowImplementation) + configurations = listOf(shadowImplementation, shadowApi) exclude("**/module-info.class", "LICENSE.txt") dependencies { exclude { @@ -175,22 +160,8 @@ tasks.shadowJar { tasks.assemble.get().dependsOn(remapJar) -val generateBuildFlags by tasks.creating { - outputs.upToDateWhen { false } - val t = layout.buildDirectory.file("buildflags.properties") - outputs.file(t) - val props = project.properties.filter { (name, value) -> name.startsWith("neu.buildflags.") } - doLast { - val p = Properties() - p.putAll(props) - t.get().asFile.writer(StandardCharsets.UTF_8).use { - p.store(it, "Store build time configuration for NEU") - } - } -} - tasks.processResources { - from(generateBuildFlags) + from(tasks["generateBuildFlags"]) filesMatching("mcmod.info") { expand( "version" to project.version, "mcversion" to "1.8.9" @@ -201,3 +172,9 @@ tasks.processResources { sourceSets.main { output.setResourcesDir(file("$buildDir/classes/java/main")) } + +applyPublishingInformation( + "deobf" to tasks.jar, + "all" to tasks.remapJar, + "sources" to tasks["sourcesJar"], +) diff --git a/buildSrc/build.gradle.kts b/buildSrc/build.gradle.kts new file mode 100644 index 00000000..5afecadc --- /dev/null +++ b/buildSrc/build.gradle.kts @@ -0,0 +1,26 @@ +/* + * Copyright (C) 2022 NotEnoughUpdates contributors + * + * This file is part of NotEnoughUpdates. + * + * NotEnoughUpdates is free software: you can redistribute it + * and/or modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation, either + * version 3 of the License, or (at your option) any later version. + * + * NotEnoughUpdates is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with NotEnoughUpdates. If not, see <https://www.gnu.org/licenses/>. + */ + +plugins { + `kotlin-dsl` +} + +repositories { + mavenCentral() +} diff --git a/buildSrc/src/main/kotlin/neubs/buildflags.kt b/buildSrc/src/main/kotlin/neubs/buildflags.kt new file mode 100644 index 00000000..6b7ab489 --- /dev/null +++ b/buildSrc/src/main/kotlin/neubs/buildflags.kt @@ -0,0 +1,56 @@ +/* + * Copyright (C) 2022 NotEnoughUpdates contributors + * + * This file is part of NotEnoughUpdates. + * + * NotEnoughUpdates is free software: you can redistribute it + * and/or modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation, either + * version 3 of the License, or (at your option) any later version. + * + * NotEnoughUpdates is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with NotEnoughUpdates. If not, see <https://www.gnu.org/licenses/>. + */ + +package neubs + +import org.gradle.api.Plugin +import org.gradle.api.Project +import org.gradle.kotlin.dsl.the +import java.nio.charset.StandardCharsets +import java.util.* + +const val NEU_BUILDFLAGS_PREFIX = "neu.buildflags." + +class NEUBuildFlags : Plugin<Project> { + override fun apply(target: Project) { + val props = + target.properties.filterKeys { it.startsWith(NEU_BUILDFLAGS_PREFIX) }.mapValues { it.value as String } + target.extensions.add("buildflags", Extension(props)) + target.tasks.create("generateBuildFlags") { + outputs.upToDateWhen { false } + val t = target.layout.buildDirectory.file("buildflags.properties") + outputs.file(t) + doLast { + val p = Properties() + p.putAll(props) + t.get().asFile.writer(StandardCharsets.UTF_8).use { + p.store(it, "Store build time configuration for NEU") + } + } + + } + } + + class Extension(val props: Map<String, String>) { + fun bool(name: String) = props["$NEU_BUILDFLAGS_PREFIX$name"] == "true" + } +} + +val Project.buildFlags: NEUBuildFlags.Extension + get() = the<NEUBuildFlags.Extension>() diff --git a/buildSrc/src/main/kotlin/neubs/publishing.kt b/buildSrc/src/main/kotlin/neubs/publishing.kt new file mode 100644 index 00000000..4f9979a1 --- /dev/null +++ b/buildSrc/src/main/kotlin/neubs/publishing.kt @@ -0,0 +1,62 @@ +/* + * Copyright (C) 2022 NotEnoughUpdates contributors + * + * This file is part of NotEnoughUpdates. + * + * NotEnoughUpdates is free software: you can redistribute it + * and/or modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation, either + * version 3 of the License, or (at your option) any later version. + * + * NotEnoughUpdates is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with NotEnoughUpdates. If not, see <https://www.gnu.org/licenses/>. + */ + +package neubs + +import org.gradle.api.Project +import org.gradle.api.publish.PublishingExtension +import org.gradle.api.publish.maven.MavenPublication +import org.gradle.kotlin.dsl.configure +import org.gradle.kotlin.dsl.create +import org.gradle.kotlin.dsl.get + +fun Project.applyPublishingInformation( + vararg artifacts: Pair<String, Any> +) { + this.configure<PublishingExtension> { + publications { + create<MavenPublication>("maven") { + for((name, source) in artifacts) { + artifact(source) { + classifier = name + } + } + pom { + name.set("NotEnoughUpdates") + description.set("A feature rich 1.8.9 Minecraft forge mod for Hypixel Skyblock") + licenses { + license { + name.set("GNU Lesser General Public License") + url.set("https://github.com/NotEnoughUpdates/NotEnoughUpdates/blob/master/COPYING.LESSER") + } + } + developers { + developer { + name.set("Moulberry") + } + developer { + name.set("The NotEnoughUpdates Contributors and Maintainers") + } + } + } + } + } + } + +} diff --git a/buildSrc/src/main/kotlin/neubs/versioning.kt b/buildSrc/src/main/kotlin/neubs/versioning.kt new file mode 100644 index 00000000..254e0012 --- /dev/null +++ b/buildSrc/src/main/kotlin/neubs/versioning.kt @@ -0,0 +1,54 @@ +/* + * Copyright (C) 2022 NotEnoughUpdates contributors + * + * This file is part of NotEnoughUpdates. + * + * NotEnoughUpdates is free software: you can redistribute it + * and/or modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation, either + * version 3 of the License, or (at your option) any later version. + * + * NotEnoughUpdates is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with NotEnoughUpdates. If not, see <https://www.gnu.org/licenses/>. + */ + +package neubs + +import org.gradle.api.Project +import java.io.ByteArrayOutputStream + +fun Project.setVersionFromEnvironment(baseVersion: String) { + val buildExtra = mutableListOf<String>() + val buildVersion = properties["BUILD_VERSION"] as? String + if (buildVersion != null) buildExtra.add(buildVersion) + if (System.getenv("CI") == "true") buildExtra.add("ci") + + val stdout = ByteArrayOutputStream() + val execResult = exec { + commandLine("git", "describe", "--always", "--first-parent", "--abbrev=7") + standardOutput = stdout + isIgnoreExitValue = true + } + if (execResult.exitValue == 0) { + buildExtra.add(String(stdout.toByteArray()).trim()) + } + + val gitDiffStdout = ByteArrayOutputStream() + val gitDiffResult = exec { + commandLine("git", "status", "--porcelain") + standardOutput = gitDiffStdout + isIgnoreExitValue = true + } + if (gitDiffStdout.toByteArray().isNotEmpty()) { + buildExtra.add("dirty") + } + + version = baseVersion + (if (buildExtra.isEmpty()) "" else buildExtra.joinToString(prefix = "+", separator = ".")) + +} + |