buildscript { repositories { mavenCentral() } dependencies { classpath group: 'com.diluv.schoomp', name: 'Schoomp', version: '1.2.6' } } import com.diluv.schoomp.Webhook import com.diluv.schoomp.message.Message plugins { id 'java' id "org.jetbrains.kotlin.jvm" id 'idea' } 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") } } } } 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' } } 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 { duplicatesStrategy 'exclude' } 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** release! Download it here: ${System.getenv("BUILD_URL")}\nChangelog:\n${getGitChangelog()}") webhook.sendMessage(message) } catch (ignored) { project.logger.error("Failed to push Discord webhook.") } } }