mirror of
https://github.com/sekwah41/Advanced-Portals.git
synced 2024-11-25 20:15:58 +01:00
200 lines
6.5 KiB
Groovy
200 lines
6.5 KiB
Groovy
import org.apache.http.HttpEntity
|
|
import org.apache.http.client.methods.CloseableHttpResponse
|
|
import org.apache.http.client.methods.HttpPost
|
|
import org.apache.http.entity.ContentType
|
|
import org.apache.http.entity.mime.MultipartEntityBuilder
|
|
import org.apache.http.impl.client.CloseableHttpClient
|
|
import org.apache.http.impl.client.HttpClients
|
|
|
|
buildscript {
|
|
repositories {
|
|
maven {url "https://plugins.gradle.org/m2/"}
|
|
mavenCentral()
|
|
mavenLocal()
|
|
}
|
|
dependencies {
|
|
classpath "org.apache.httpcomponents:httpmime:4.5.13"
|
|
}
|
|
}
|
|
|
|
plugins {
|
|
id "com.matthewprenger.cursegradle" version "1.4.0"
|
|
}
|
|
|
|
apply plugin: 'java'
|
|
apply plugin: 'maven-publish'
|
|
apply plugin: 'idea'
|
|
apply plugin: 'eclipse'
|
|
|
|
def branch = System.getenv("GITHUB_REF");
|
|
def sha = System.getenv("GITHUB_SHA");
|
|
def isDevBranch = branch == null || !(branch.startsWith("refs/tags/") && !branch.contains("-"))
|
|
|
|
group = 'com.sekwah.advancedportals'
|
|
version = getPluginData("version") + (isDevBranch ? '-SNAPSHOT' : '')
|
|
|
|
description = ""
|
|
|
|
sourceCompatibility = 1.8
|
|
targetCompatibility = 1.8
|
|
|
|
tasks.withType(JavaCompile) {
|
|
options.encoding = 'UTF-8'
|
|
}
|
|
|
|
String getPluginData(String tag) {
|
|
File file = file("src/main/resources/plugin.yml")
|
|
String version = "notfound"
|
|
file.readLines("UTF-8").each {String line ->
|
|
line = line.trim()
|
|
if(line.startsWith(tag)) {
|
|
version = line.substring(tag.length() + 2, line.length())
|
|
}
|
|
}
|
|
println "Advanced Portals v" + version
|
|
return version
|
|
}
|
|
|
|
configurations {
|
|
// configuration that holds jars to copy into lib
|
|
includeLibs
|
|
}
|
|
|
|
repositories {
|
|
maven { url "https://repo.maven.apache.org/maven2" }
|
|
maven { url "https://hub.spigotmc.org/nexus/content/repositories/snapshots/" }
|
|
maven { url "https://oss.sonatype.org/content/repositories/snapshots/" }
|
|
maven { url "https://nexus.velocitypowered.com/repository/maven-public/" }
|
|
maven { url 'https://papermc.io/repo/repository/maven-public/' }
|
|
}
|
|
|
|
// includeLibs just says to include the library in the final jar
|
|
dependencies {
|
|
//implementation "org.bukkit:bukkit:1.16.1-R0.1-SNAPSHOT"
|
|
implementation "org.spigotmc:spigot-api:1.16.1-R0.1-SNAPSHOT"
|
|
implementation "net.md-5:bungeecord-api:1.15-SNAPSHOT"
|
|
|
|
implementation "com.velocitypowered:velocity-api:1.1.0-SNAPSHOT"
|
|
annotationProcessor "com.velocitypowered:velocity-api:1.1.0-SNAPSHOT"
|
|
|
|
implementation "io.netty:netty-all:4.0.4.Final"
|
|
compileOnly 'com.destroystokyo.paper:paper-api:1.16.5-R0.1-SNAPSHOT'
|
|
|
|
//compile fileTree(dir: 'libs', include: ['*.jar'])
|
|
}
|
|
|
|
/** For pre-releases and testers to be able to try the latest commits if they want.
|
|
* If the builds start exceeding 8MB then we may want to upload to s3 instead and periodically clear.
|
|
* TODO possibly add a task that announces when builds are made?
|
|
* Though add a note that it may take a while for Curse to approve the files.
|
|
*/
|
|
task discordupload {
|
|
dependsOn(jar)
|
|
doLast {
|
|
String discordWebhook = System.getenv("DISCORD_WEBHOOK")
|
|
|
|
if(discordWebhook != null) {
|
|
println("Logging Into Discord")
|
|
|
|
CloseableHttpClient httpClient = HttpClients.createDefault()
|
|
HttpPost uploadFile = new HttpPost(discordWebhook)
|
|
|
|
MultipartEntityBuilder builder = MultipartEntityBuilder.create()
|
|
builder.addTextBody("content", "New automated dev build\n\n" +
|
|
"Current Features: <${project.github}/blob/${sha}/CHANGELOG.md>")
|
|
|
|
builder.addBinaryBody("file", file(jar.archiveFile).newInputStream(), ContentType.APPLICATION_OCTET_STREAM, jar.archiveName)
|
|
|
|
HttpEntity multipart = builder.build()
|
|
|
|
uploadFile.setEntity(multipart)
|
|
CloseableHttpResponse response = httpClient.execute(uploadFile)
|
|
response.getEntity()
|
|
|
|
println("Posted build")
|
|
|
|
} else {
|
|
println("Discord webhook unspecified")
|
|
}
|
|
}
|
|
}
|
|
|
|
tasks.curseforge.enabled = System.getenv("CURSE_API") != null
|
|
|
|
curseforge {
|
|
logger.info("Curse api: " + System.getenv("CURSE_API"))
|
|
if (System.getenv("CURSE_API") != null) {
|
|
apiKey = System.getenv("CURSE_API")
|
|
}
|
|
project {
|
|
id = project.curse_project_id
|
|
// TODO add code to reference this but also cut the latest change logs in for the files
|
|
changelog = "${project.github}/blob/${sha}/CHANGELOG.md"
|
|
changelogType = 'markdown'
|
|
releaseType = 'release'
|
|
addGameVersion '1.16'
|
|
addGameVersion '1.15'
|
|
addGameVersion '1.14'
|
|
addGameVersion '1.13'
|
|
|
|
mainArtifact(jar){
|
|
|
|
}
|
|
//addArtifact sourcesJar
|
|
//addArtifact deobfJar
|
|
//addArtifact javadocJar
|
|
}
|
|
}
|
|
|
|
task copyPlugin {
|
|
doLast {
|
|
copy {
|
|
if(System.env.MC_SERVER_LOC == null) {
|
|
throw new Exception('You must set the server location and jar to use')
|
|
}
|
|
println "$buildDir/libs/Advanced-Portals-${version}.jar"
|
|
println "${System.env.MC_SERVER_LOC}/plugins/Advanced-Portals-${version}.jar"
|
|
try {
|
|
delete fileTree("${System.env.MC_SERVER_LOC}/plugins/") {
|
|
include "*.jar"
|
|
}
|
|
}
|
|
catch(RuntimeException e) {
|
|
println e.getLocalizedMessage()
|
|
}
|
|
from file("$buildDir/libs/Advanced-Portals-${version}.jar")
|
|
into file("${System.env.MC_SERVER_LOC}/plugins/")
|
|
}
|
|
}
|
|
}
|
|
|
|
// Set SPIGOT_LOC to the location of your server and SPIGOT_JAR as the name of the jar file in the server you want to run
|
|
// DIReallyKnowWhatIAmDoingISwear is to remove the stupid pause spigot has at the start
|
|
task runJar() {
|
|
doLast {
|
|
if(System.env.MC_SERVER_LOC == null || System.env.MC_SERVER_JAR == null) {
|
|
throw new Exception('You must set the server location and jar to use MC_SERVER_LOC and MC_SERVER_JAR')
|
|
}
|
|
javaexec {
|
|
main "-jar"
|
|
args "${System.env.MC_SERVER_LOC}\\${System.env.MC_SERVER_JAR}.jar"
|
|
jvmArgs = ["-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005", "-DIReallyKnowWhatIAmDoingISwear=true"]
|
|
workingDir "${System.env.MC_SERVER_LOC}"
|
|
}
|
|
}
|
|
}
|
|
|
|
task updateChangelog(type: Exec) {
|
|
commandLine 'cmd', '/c', 'npx standard-version'
|
|
ext.output = {
|
|
return standardOutput.toString()
|
|
}
|
|
}
|
|
|
|
task updateChangelogPreRelease(type: Exec) {
|
|
commandLine 'cmd', '/c', 'npx standard-version --prerelease'
|
|
ext.output = {
|
|
return standardOutput.toString()
|
|
}
|
|
}
|