plugins { id("architectury-plugin") version("3.4-SNAPSHOT") id("dev.architectury.loom") version("0.12.0-SNAPSHOT") apply false id("org.cadixdev.licenser") version("0.6.1") id("me.shedaniel.unified-publishing") version("0.1.+") id("maven-publish") } import java.text.SimpleDateFormat def runNumber = System.getenv("GITHUB_RUN_NUMBER") ?: "9999" version = rootProject.base_version + "." + runNumber + (rootProject.unstable.toBoolean() ? "-alpha" : "") group = "me.shedaniel" subprojects { apply plugin: "me.shedaniel.unified-publishing" apply plugin: "java" apply plugin: "dev.architectury.loom" sourceCompatibility = targetCompatibility = 1.8 java { withSourcesJar() } loom { silentMojangMappingsLicense() } dependencies { minecraft("com.mojang:minecraft:${rootProject.minecraft_version}") mappings(loom.layered { officialMojangMappings() parchment("org.parchmentmc.data:parchment-1.17.1:2021.10.10@zip") crane("dev.architectury:crane:1.17+build.11") }) } jar { from rootProject.file("LICENSE") } tasks.withType(JavaCompile) { options.encoding = "UTF-8" options.release = 8 } } subprojects { if (project.path == ':fabric' || project.path == ':forge') { loom { mods { main { // to match the default mod generated for Forge sourceSet project.sourceSets.main def depProjects = [":api", ":runtime", ":default-plugin"] depProjects.each { sourceSet project(it).sourceSets.main } } } } } } allprojects { apply plugin: "maven-publish" apply plugin: "architectury-plugin" apply plugin: "org.cadixdev.licenser" architectury { compileOnly() } repositories { maven { url "https://maven.shedaniel.me" } maven { url "https://maven.parchmentmc.org" } maven { url "https://maven.terraformersmc.com/releases" } mavenLocal() } license { header rootProject.file("HEADER") include "**/*.java" exclude "mezz/jei/api/**/*.java" ext { name = "shedaniel" year = "2018, 2019, 2020, 2021, 2022, 2023" } } tasks.withType(GenerateModuleMetadata) { enabled = false } } ["api", "default-plugin", "runtime"].forEach { project(":fabric").evaluationDependsOn(":$it") } subprojects { group = rootProject.group version = rootProject.version archivesBaseName = rootProject.name publishing { repositories { if (System.getenv("MAVEN_PASS") != null) { maven { url = "https://deploy.shedaniel.me/" credentials { username = "shedaniel" password = System.getenv("MAVEN_PASS") } } } } } } task licenseFormatAll subprojects { licenseFormatAll.dependsOn("${path}:licenseFormat") } ext { releaseChangelog = "No changelog" } /* Thank you modmenu & fablabs */ task releaseOnCf { def df = new SimpleDateFormat("yyyy-MM-dd HH:mm") df.setTimeZone(TimeZone.getTimeZone("UTC")) def branch if (System.env.BRANCH_NAME) { branch = System.env.BRANCH_NAME branch = branch.substring(branch.lastIndexOf("/") + 1) } else { branch = "git rev-parse --abbrev-ref HEAD".execute().in.text.trim() } if (branch == "HEAD") { branch = "git rev-parse --short HEAD".execute().in.text.trim() } def time = df.format(new Date()) def changes = new StringBuilder() changes << "## REI v$project.version for $project.supported_version\nUpdated at **$time**.\n[Click here for changelog](https://www.github.com/shedaniel/RoughlyEnoughItems/commits/$branch)" def proc = "git log --max-count=200 --pretty=format:%s".execute() proc.in.eachLine { line -> def processedLine = line.toString() if (!processedLine.contains("New translations") && !processedLine.contains("Merge") && !processedLine.contains("branch")) { changes << "\n- ${processedLine.capitalize()}" } } proc.waitFor() releaseChangelog = changes.toString() if (subprojects.any { it.name == "forge" }) { dependsOn project("forge").tasks.getByName("publishUnified") } if (subprojects.any { it.name == "fabric" }) { // dependsOn project("fabric").tasks.getByName("publishUnified") } }