223 lines
6.6 KiB
Groovy
223 lines
6.6 KiB
Groovy
buildscript {
|
|
repositories {
|
|
mavenCentral()
|
|
}
|
|
|
|
dependencies {
|
|
classpath group: 'com.diluv.schoomp', name: 'Schoomp', version: '1.2.6'
|
|
}
|
|
}
|
|
|
|
plugins {
|
|
id 'java'
|
|
id "org.jetbrains.kotlin.jvm"
|
|
id 'idea'
|
|
// This needs to be in the root
|
|
// https://github.com/FabricMC/fabric-loom/issues/612#issuecomment-1198444120
|
|
// Also it looks like property lookups don't work this early
|
|
id 'fabric-loom' version '1.0-SNAPSHOT' apply false
|
|
}
|
|
|
|
import com.diluv.schoomp.Webhook
|
|
import com.diluv.schoomp.message.Message
|
|
|
|
|
|
def isRelease() {
|
|
try {
|
|
def stdout = new ByteArrayOutputStream()
|
|
def gitHash = System.getenv('GIT_COMMIT')
|
|
def gitPrevHash = System.getenv('GIT_PREVIOUS_COMMIT')
|
|
def travisRange = System.getenv('TRAVIS_COMMIT_RANGE')
|
|
if (gitHash && gitPrevHash) {
|
|
exec {
|
|
commandLine 'git', 'log', '--pretty=tformat:- %s', '' + gitPrevHash + '...' + gitHash
|
|
standardOutput = stdout
|
|
}
|
|
return stdout.toString().toLowerCase().contains("[release")
|
|
} else if (travisRange) {
|
|
exec {
|
|
commandLine 'git', 'log', '--pretty=tformat:- %s', '' + travisRange
|
|
standardOutput = stdout
|
|
}
|
|
return stdout.toString().toLowerCase().contains("[release")
|
|
} else {
|
|
return false
|
|
}
|
|
} catch (ignored) {
|
|
return false
|
|
}
|
|
}
|
|
|
|
String getArtifactID(String platform) {
|
|
return "${modID}-${platform}-${minecraftVersion}"
|
|
}
|
|
|
|
void setupJar(Object project) {
|
|
project.jar {
|
|
manifest {
|
|
attributes([
|
|
'Specification-Title' : modID,
|
|
'Specification-Vendor' : "petra-kat",
|
|
'Specification-Version' : project.jar.archiveVersion,
|
|
'Implementation-Title' : project.name,
|
|
'Implementation-Version' : project.jar.archiveVersion,
|
|
'Implementation-Vendor' : "petra-kat",
|
|
'Implementation-Timestamp': new Date().format("yyyy-MM-dd'T'HH:mm:ssZ"),
|
|
'Timestampe' : System.currentTimeMillis(),
|
|
'Built-On-Java' : "${System.getProperty('java.vm.version')} (${System.getProperty('java.vm.vendor')})",
|
|
'Build-On-Minecraft' : minecraftVersion
|
|
])
|
|
}
|
|
}
|
|
|
|
project.publishing {
|
|
publications {
|
|
mavenJava(MavenPublication) {
|
|
groupId project.group
|
|
artifactId project.archivesBaseName
|
|
version project.version
|
|
from project.components.java
|
|
}
|
|
}
|
|
|
|
repositories {
|
|
maven {
|
|
url "file://" + System.getenv("local_maven")
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
repositories {
|
|
mavenCentral()
|
|
}
|
|
|
|
subprojects {
|
|
apply plugin: 'java'
|
|
apply plugin: 'kotlin'
|
|
apply plugin: 'maven-publish'
|
|
|
|
group = "at.petra-k.$modID" // http://maven.apache.org/guides/mini/guide-naming-conventions.html
|
|
version = "${modVersion}"
|
|
if (!isRelease() && System.getenv('BUILD_NUMBER') != null) {
|
|
version += "-pre-" + System.getenv('BUILD_NUMBER')
|
|
} else if (System.getenv('TAG_NAME') != null) {
|
|
version = System.getenv('TAG_NAME').substring(1)
|
|
println 'Version overridden to tag version ' + version
|
|
}
|
|
// archivesBaseName set in each gradle
|
|
|
|
repositories {
|
|
maven { url "https://libraries.minecraft.net/" }
|
|
|
|
mavenCentral()
|
|
|
|
maven {
|
|
name = 'Sponge / Mixin'
|
|
url = 'https://repo.spongepowered.org/repository/maven-public/'
|
|
}
|
|
|
|
maven {
|
|
name = 'BlameJared Maven'
|
|
url = 'https://maven.blamejared.com'
|
|
}
|
|
|
|
maven {
|
|
name = "Modrinth"
|
|
url = "https://api.modrinth.com/maven"
|
|
content {
|
|
includeGroup "maven.modrinth"
|
|
}
|
|
}
|
|
|
|
maven {
|
|
url = "https://jitpack.io"
|
|
}
|
|
}
|
|
|
|
|
|
tasks.withType(JavaCompile).configureEach {
|
|
it.options.encoding = 'UTF-8'
|
|
it.options.release = 17
|
|
}
|
|
|
|
// Disables Gradle's custom module metadata from being published to maven. The
|
|
// metadata includes mapped dependencies which are not reasonably consumable by
|
|
// other mod developers.
|
|
tasks.withType(GenerateModuleMetadata) {
|
|
enabled = false
|
|
}
|
|
|
|
sourceSets.main.kotlin.srcDirs += 'src/main/java'
|
|
|
|
java.toolchain.languageVersion = JavaLanguageVersion.of(17)
|
|
java.withSourcesJar()
|
|
java.withJavadocJar()
|
|
|
|
processResources {
|
|
exclude '.cache'
|
|
}
|
|
sourcesJar {
|
|
duplicatesStrategy 'exclude'
|
|
}
|
|
}
|
|
|
|
allprojects { gradle.projectsEvaluated { tasks.withType(JavaCompile) { options.compilerArgs << "-Xmaxerrs" << "1000" } } }
|
|
|
|
compileKotlin {
|
|
kotlinOptions {
|
|
jvmTarget = "17"
|
|
}
|
|
}
|
|
compileTestKotlin {
|
|
kotlinOptions {
|
|
jvmTarget = "17"
|
|
}
|
|
}
|
|
|
|
def getGitChangelog = { ->
|
|
try {
|
|
def stdout = new ByteArrayOutputStream()
|
|
def gitHash = System.getenv('GIT_COMMIT')
|
|
def gitPrevHash = System.getenv('GIT_PREVIOUS_COMMIT')
|
|
def travisRange = System.getenv('TRAVIS_COMMIT_RANGE')
|
|
if (gitHash && gitPrevHash) {
|
|
exec {
|
|
commandLine 'git', 'log', '--pretty=tformat:> - %s', '' + gitPrevHash + '...' + gitHash
|
|
standardOutput = stdout
|
|
}
|
|
return stdout.toString().trim()
|
|
} else if (travisRange) {
|
|
exec {
|
|
commandLine 'git', 'log', '--pretty=tformat:> - %s', '' + travisRange
|
|
standardOutput = stdout
|
|
}
|
|
return stdout.toString().trim()
|
|
} else {
|
|
return ""
|
|
}
|
|
} catch (ignored) {
|
|
return ""
|
|
}
|
|
}
|
|
|
|
task sendWebhook {
|
|
doLast {
|
|
try {
|
|
if (System.getenv('discordWebhook') == null || System.getenv("BUILD_URL") == null) {
|
|
println "Cannot send the webhook without the webhook url or the build url"
|
|
return
|
|
}
|
|
def webhook = new Webhook(System.getenv('discordWebhook'), 'Petrak@ Patreon Gradle')
|
|
|
|
def message = new Message()
|
|
message.setUsername("Patreon Early Access")
|
|
message.setContent("New **$modName** prerelease -- build ${System.getenv("BUILD_NUMBER")} for $minecraftVersion! \n" +
|
|
"Download it here: ${System.getenv("BUILD_URL")}\nChangelog:\n${getGitChangelog()}")
|
|
|
|
webhook.sendMessage(message)
|
|
} catch (ignored) {
|
|
project.logger.error("Failed to push Discord webhook.")
|
|
}
|
|
}
|
|
}
|