diff --git a/VelocityCore/Dependencies/build.gradle.kts b/VelocityCore/Dependencies/build.gradle.kts new file mode 100644 index 00000000..009768d0 --- /dev/null +++ b/VelocityCore/Dependencies/build.gradle.kts @@ -0,0 +1,61 @@ +/* + * This file is a part of the SteamWar software. + * + * Copyright (C) 2024 SteamWar.de-Serverteam + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program 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 Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + */ + +plugins { + steamwar.java + alias(libs.plugins.shadow) +} + +tasks.shadowJar { + exclude("META-INF/*") + exclude("org/sqlite/native/FreeBSD/**', 'org/sqlite/native/Mac/**', 'org/sqlite/native/Windows/**', 'org/sqlite/native/Linux-Android/**', 'org/sqlite/native/Linux-Musl/**") + exclude("org/sqlite/native/Linux/aarch64/**', 'org/sqlite/native/Linux/arm/**', 'org/sqlite/native/Linux/armv6/**', 'org/sqlite/native/Linux/armv7/**', 'org/sqlite/native/Linux/ppc64/**', 'org/sqlite/native/Linux/x86/**") + exclude("org/slf4j/**") + //https://imperceptiblethoughts.com/shadow/configuration/minimizing/ + minimize { + exclude(dependency("mysql:mysql-connector-java:.*")) + } + duplicatesStrategy = DuplicatesStrategy.INCLUDE +} + +tasks.build { + finalizedBy(tasks.shadowJar) +} + +java { + sourceCompatibility = JavaVersion.VERSION_17 + targetCompatibility = JavaVersion.VERSION_17 +} + +dependencies { + compileOnly(libs.velocity) + annotationProcessor(libs.velocityapi) + + implementation(libs.jda) { + exclude(module = "opus-java") + } + + implementation(libs.sqlite) + implementation(libs.mysql) + + implementation(libs.msgpack) + implementation(libs.apolloprotos) + + implementation(libs.nbt) +} \ No newline at end of file diff --git a/VelocityCore/Dependencies/src/de/steamwar/discord/Dependencies.java b/VelocityCore/Dependencies/src/de/steamwar/discord/Dependencies.java new file mode 100644 index 00000000..f3b2a243 --- /dev/null +++ b/VelocityCore/Dependencies/src/de/steamwar/discord/Dependencies.java @@ -0,0 +1,29 @@ +/* + * This file is a part of the SteamWar software. + * + * Copyright (C) 2020 SteamWar.de-Serverteam + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program 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 Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + */ + +package de.steamwar.discord; + +import com.velocitypowered.api.plugin.Plugin; + +@Plugin( + id = "depencendiesvelocitycore", + name = "DepencendiesVelocityCore" +) +public class Dependencies { +} diff --git a/VelocityCore/build.gradle.kts b/VelocityCore/build.gradle.kts index f81416a3..f290ed22 100644 --- a/VelocityCore/build.gradle.kts +++ b/VelocityCore/build.gradle.kts @@ -22,19 +22,6 @@ plugins { alias(libs.plugins.shadow) } -tasks.shadowJar { - exclude("META-INF/*") - exclude("org/sqlite/native/FreeBSD/**', 'org/sqlite/native/Mac/**', 'org/sqlite/native/Windows/**', 'org/sqlite/native/Linux-Android/**', 'org/sqlite/native/Linux-Musl/**") - exclude("org/sqlite/native/Linux/aarch64/**', 'org/sqlite/native/Linux/arm/**', 'org/sqlite/native/Linux/armv6/**', 'org/sqlite/native/Linux/armv7/**', 'org/sqlite/native/Linux/ppc64/**', 'org/sqlite/native/Linux/x86/**") - exclude("org/slf4j/**") - //https://imperceptiblethoughts.com/shadow/configuration/minimizing/ - minimize { - exclude(project(":VelocityCore")) - exclude(dependency("mysql:mysql-connector-java:.*")) - } - duplicatesStrategy = DuplicatesStrategy.INCLUDE -} - tasks.build { finalizedBy(tasks.shadowJar) } @@ -51,21 +38,10 @@ dependencies { compileOnly(libs.viavelocity) compileOnly(project(":VelocityCore:Persistent", "default")) + compileOnly(project(":VelocityCore:Dependencies", "default")) implementation(project(":CommonCore")) implementation(project(":CommandFramework")) - - implementation(libs.sqlite) - implementation(libs.mysql) - - implementation(libs.jda) { - exclude(module = "opus-java") - } - - implementation(libs.msgpack) - implementation(libs.apolloprotos) - - implementation(libs.nbt) } tasks.register("DevVelocity") { @@ -73,5 +49,6 @@ tasks.register("DevVelocity") { description = "Run a Dev Velocity" dependsOn(":VelocityCore:shadowJar") dependsOn(":VelocityCore:Persistent:jar") + dependsOn(":VelocityCore:Dependencies:shadowJar") template = "DevVelocity" } diff --git a/VelocityCore/src/de/steamwar/velocitycore/VelocityCore.java b/VelocityCore/src/de/steamwar/velocitycore/VelocityCore.java index 392478b0..aa98a034 100644 --- a/VelocityCore/src/de/steamwar/velocitycore/VelocityCore.java +++ b/VelocityCore/src/de/steamwar/velocitycore/VelocityCore.java @@ -60,7 +60,7 @@ import java.util.logging.Logger; @Plugin( id = "velocitycore", name = "VelocityCore", - dependencies = { @Dependency(id = "persistentvelocitycore") } + dependencies = { @Dependency(id = "persistentvelocitycore"), @Dependency(id = "depencendiesvelocitycore") } ) public class VelocityCore implements ReloadablePlugin { diff --git a/buildSrc/src/steamwar.devserver.gradle b/buildSrc/src/steamwar.devserver.gradle index 53f8be3d..3c5cf882 100644 --- a/buildSrc/src/steamwar.devserver.gradle +++ b/buildSrc/src/steamwar.devserver.gradle @@ -1,3 +1,5 @@ +import java.security.MessageDigest + /* * This file is a part of the SteamWar software. * @@ -121,6 +123,22 @@ class DevServer extends DefaultTask { } def archive = archiveTask.archiveFile.get().asFile + + Process process = new ProcessBuilder("ssh", host, "-T", "sha1sum $base/${archive.name.replace("-all", "")}").start(); + byte[] bytes = MessageDigest.getInstance("sha1").digest(archive.bytes) + StringBuilder sb = new StringBuilder() + for (byte b : bytes) { + sb.append(String.format("%02X", b)) + } + boolean same = false + process.inputStream.readLines().forEach { + same |= it.startsWith(sb.toString().toLowerCase()) + } + if (same) { + println("Skipping $archive") + return + } + println("Uploading $archive") new ProcessBuilder("ssh", host, "-T", "rm $base/${archive.name.replace("-all", "")}").start().waitFor() new ProcessBuilder("scp", archive.absolutePath, "$host:~/$base/${archive.name.replace("-all", "")}").start().waitFor() diff --git a/settings.gradle.kts b/settings.gradle.kts index 9b530499..8ab618ff 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -247,6 +247,7 @@ include("TutorialSystem") include( "VelocityCore", + "VelocityCore:Dependencies", "VelocityCore:Persistent" ) diff --git a/steamwarci.yml b/steamwarci.yml index 3e3660b1..5548033a 100644 --- a/steamwarci.yml +++ b/steamwarci.yml @@ -29,6 +29,7 @@ artifacts: "/jars/TutorialSystem.jar": "TutorialSystem/build/libs/TutorialSystem.jar" "/jars/PersistentVelocityCore.jar": "VelocityCore/Persistent/build/libs/Persistent.jar" + "/jars/DependenciesVelocityCore.jar": "VelocityCore/Dependencies/build/libs/Dependencies-all.jar" "/jars/VelocityCore.jar": "VelocityCore/build/libs/VelocityCore-all.jar" "/usr/local/bin/deployarena.py": "VelocityCore/deployarena.py"