From 9896b0303f62f222dddcb250bad17ccbc7f383e1 Mon Sep 17 00:00:00 2001 From: broccolai Date: Sun, 29 Oct 2023 17:35:27 +0000 Subject: [PATCH] move to gremlin :) --- build.gradle.kts | 6 -- buildSrc/build.gradle.kts | 12 ---- buildSrc/src/main/kotlin/Configurations.kt | 55 ----------------- .../src/main/kotlin/DependencyInspection.kt | 61 ------------------- bukkit/build.gradle.kts | 59 ++++++++---------- .../tags/bukkit/PaperTagsLoader.java | 52 ---------------- bukkit/src/main/resources/paper-plugin.yml | 2 +- gradle/libs.versions.conf | 3 + settings.gradle.kts | 7 +++ 9 files changed, 35 insertions(+), 222 deletions(-) delete mode 100644 buildSrc/build.gradle.kts delete mode 100644 buildSrc/src/main/kotlin/Configurations.kt delete mode 100644 buildSrc/src/main/kotlin/DependencyInspection.kt delete mode 100644 bukkit/src/main/java/broccolai/tags/bukkit/PaperTagsLoader.java diff --git a/build.gradle.kts b/build.gradle.kts index d0d07ea..17ef39c 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -48,12 +48,6 @@ subprojects { processResources { expand("version" to rootProject.version) } - - register("inspectDependencies") { - doLast { - inspectDependenciesForProject(project) - } - } } } diff --git a/buildSrc/build.gradle.kts b/buildSrc/build.gradle.kts deleted file mode 100644 index 742f2f1..0000000 --- a/buildSrc/build.gradle.kts +++ /dev/null @@ -1,12 +0,0 @@ -plugins { - `kotlin-dsl` -} - -repositories { - mavenCentral() - gradlePluginPortal() -} - -dependencies { - implementation("com.github.johnrengelman", "shadow", "8.1.1") -} diff --git a/buildSrc/src/main/kotlin/Configurations.kt b/buildSrc/src/main/kotlin/Configurations.kt deleted file mode 100644 index 7721889..0000000 --- a/buildSrc/src/main/kotlin/Configurations.kt +++ /dev/null @@ -1,55 +0,0 @@ -import com.github.jengelman.gradle.plugins.shadow.ShadowPlugin -import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar -import org.gradle.api.Project -import org.gradle.kotlin.dsl.apply -import org.gradle.kotlin.dsl.invoke -import org.gradle.kotlin.dsl.withType - -fun Project.setupShadowJar() { - apply() - - tasks { - withType { - - dependencies { - exclude(dependency("com.google.guava:")) - exclude(dependency("com.google.errorprone:")) - exclude(dependency("org.checkerframework:")) - } - - exclude("**/Utils21.class") - - relocate( - rootProject.group, - "com.github.benmanes.caffeine", - "com.typesafe.config", - "com.zaxxer.hikari", - "com.google.inject", - "org.antlr", - "org.jdbi", - "org.aopalliance", - "org.spongepowered.configurate", - "io.leangen.geantyref", - "cloud.commandframework", - "net.kyori.event", - "net.kyori.coffee", - "org.objectweb.asm", - "broccolai.corn" - ) - - archiveFileName.set(project.name + ".jar") - } - - getByName("build") { - dependsOn(withType()) - } - } -} - -private fun ShadowJar.relocate(group: Any, vararg dependencies: String) { - dependencies.forEach { - val split = it.split('.') - val name = split.last() - relocate(it, "$group.dependencies.$name") - } -} diff --git a/buildSrc/src/main/kotlin/DependencyInspection.kt b/buildSrc/src/main/kotlin/DependencyInspection.kt deleted file mode 100644 index 5f7b001..0000000 --- a/buildSrc/src/main/kotlin/DependencyInspection.kt +++ /dev/null @@ -1,61 +0,0 @@ -import org.gradle.api.Project -import org.gradle.api.artifacts.Configuration -import java.io.File -import java.nio.ByteBuffer -import java.nio.ByteOrder - - -fun inspectDependenciesForProject(project: Project) { - val inspectConfig = createInspectionConfiguration(project) - val files = resolveDependencies(inspectConfig, project) ?: return - - if (files.isEmpty()) { - println("No dependencies found for project ${project.name}.") - return - } - - files.forEach { file -> - inspectClassFilesInJar(file, project) - } -} - -fun createInspectionConfiguration(project: Project): Configuration { - return project.configurations.create("inspectConfig").apply { - extendsFrom(project.configurations.findByName("implementation")) - isCanBeResolved = true - } -} - -fun resolveDependencies(configuration: Configuration, project: Project): Set? { - return try { - configuration.resolve() - } catch (e: Exception) { - println("Could not resolve dependencies for project ${project.name}.") - null - } -} - -fun inspectClassFilesInJar(file: File, project: Project) { - project.zipTree(file).visit { - if (name.endsWith(".class")) { - val majorVersion = extractMajorVersionFromClassFile(this.file) - - if (majorVersion == 65) { - println(""" - Warning: Class file in ${file.name} ${this.path} - uses Java class version $majorVersion (file version 65) - """.trimIndent()) - } - } - } -} - -fun extractMajorVersionFromClassFile(classFile: File): Int { - val classFileBytes = classFile.readBytes() - val byteBuffer = ByteBuffer.wrap(classFileBytes).order(ByteOrder.BIG_ENDIAN) - - // Skip the first 4 bytes for the magic number, then read the next two for minor and another two for major - byteBuffer.position(4) - val minorVersion = byteBuffer.short.toInt() - return byteBuffer.short.toInt() -} diff --git a/bukkit/build.gradle.kts b/bukkit/build.gradle.kts index c9f23c3..5e084f4 100644 --- a/bukkit/build.gradle.kts +++ b/bukkit/build.gradle.kts @@ -3,22 +3,33 @@ import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar plugins { id("xyz.jpenilla.run-paper") version "2.2.0" id("com.github.johnrengelman.shadow") + id("xyz.jpenilla.gremlin-gradle") +} + +repositories { + maven("https://repo.jpenilla.xyz/snapshots/") } dependencies { api(project(":tags-core")) + runtimeDownload(project(":tags-core")) compileOnly(libs.paper.api) compileOnly(libs.papi) compileOnly(libs.vault) api(libs.cloud.paper) + runtimeDownload(libs.cloud.paper) api(libs.cloud.extras) + runtimeDownload(libs.cloud.extras) api(libs.corn.minecraft.paper) + runtimeDownload(libs.corn.minecraft.paper) api(libs.interfaces.paper) + runtimeDownload(libs.interfaces.paper) - implementation(libs.h2) + api(libs.h2) + runtimeDownload(libs.h2) } tasks { @@ -29,47 +40,25 @@ tasks { } } - fun Project.collectDependencies(): Set { - val api = configurations.api.get() - val implementation = configurations.implementation.get() - return (api.dependencies + implementation.dependencies).toSet() - } - - fun Set.formatDependencies(): List = flatMap { dependency -> - when (dependency) { - is ProjectDependency -> { - dependency.dependencyProject.collectDependencies().formatDependencies() - } - - else -> { - val formatted = dependency.run { "$group:$name:$version" } - listOf(formatted) - } - } - } - - register("writeDependenciesToFile") { - val outputDir = File("${buildDir}/resources/main") - outputDir.mkdirs() - val outputFile = File(outputDir, "libraries.txt") - - val dependencies = project - .collectDependencies() - .formatDependencies() - - outputFile.writeText(dependencies.joinToString("\n")) - } - withType { dependencies { include(project(":tags-core")) include(project(":tags-api")) + include(dependency(libs.gremlin.get().toString())) } - archiveFileName.set(project.name + "aaaa.jar") + archiveFileName.set(project.name + ".jar") + } + + build { + dependsOn(shadowJar) } - named("build") { - dependsOn("writeDependenciesToFile", withType()) + writeDependencies { + repos.set(listOf( + "https://repo.papermc.io/repository/maven-public/", + "https://repo.broccol.ai/releases", + "https://repo.jpenilla.xyz/snapshots/", + )) } } diff --git a/bukkit/src/main/java/broccolai/tags/bukkit/PaperTagsLoader.java b/bukkit/src/main/java/broccolai/tags/bukkit/PaperTagsLoader.java deleted file mode 100644 index 0dfc929..0000000 --- a/bukkit/src/main/java/broccolai/tags/bukkit/PaperTagsLoader.java +++ /dev/null @@ -1,52 +0,0 @@ -package broccolai.tags.bukkit; - -import io.papermc.paper.plugin.loader.PluginClasspathBuilder; -import io.papermc.paper.plugin.loader.PluginLoader; -import io.papermc.paper.plugin.loader.library.impl.MavenLibraryResolver; -import java.io.BufferedReader; -import java.io.InputStream; -import java.io.InputStreamReader; -import java.nio.charset.StandardCharsets; -import java.util.List; -import org.eclipse.aether.artifact.DefaultArtifact; -import org.eclipse.aether.graph.Dependency; -import org.eclipse.aether.repository.RemoteRepository; -import org.jetbrains.annotations.NotNull; - -@SuppressWarnings("UnstableApiUsage") -public class PaperTagsLoader implements PluginLoader { - - @Override - public void classloader(@NotNull PluginClasspathBuilder classpathBuilder) { - MavenLibraryResolver resolver = new MavenLibraryResolver(); - - resolver.addRepository( - new RemoteRepository.Builder("paper", "default", "https://repo.papermc.io/repository/maven-public/").build() - ); - - resolver.addRepository( - new RemoteRepository.Builder("broccoli", "default", "https://repo.broccol.ai/releases").build() - ); - - for (String serialized : this.readDependencies()) { - Dependency dependency = new Dependency(new DefaultArtifact(serialized), null); - resolver.addDependency(dependency); - } - - classpathBuilder.addLibrary(resolver); - } - - private List readDependencies() { - InputStream inputStream = getClass().getResourceAsStream("/libraries.txt"); - - try ( - InputStreamReader streamReader = new InputStreamReader(inputStream, StandardCharsets.UTF_8); - BufferedReader reader = new BufferedReader(streamReader) - ) { - return reader.lines().toList(); - } catch (Exception e) { - throw new RuntimeException(e); - } - } - -} diff --git a/bukkit/src/main/resources/paper-plugin.yml b/bukkit/src/main/resources/paper-plugin.yml index 9b8438c..32a444a 100644 --- a/bukkit/src/main/resources/paper-plugin.yml +++ b/bukkit/src/main/resources/paper-plugin.yml @@ -1,7 +1,7 @@ name : Tags version : $version main : broccolai.tags.bukkit.BukkitTagsPlatform -loader: broccolai.tags.bukkit.PaperTagsLoader +loader: xyz.jpenilla.gremlin.runtime.platformsupport.DefaultsPaperPluginLoader api-version : '1.20' dependencies: server: diff --git a/gradle/libs.versions.conf b/gradle/libs.versions.conf index bae834b..7a829e6 100644 --- a/gradle/libs.versions.conf +++ b/gradle/libs.versions.conf @@ -13,12 +13,14 @@ plugins = { "net.ltgt.errorprone" = "3.1.0" "xyz.jpenilla.run-paper" = "1.0.6" "com.adarshr.test-logger" = "3.2.0" + "xyz.jpenilla.gremlin-gradle" = "0.0.1-SNAPSHOT" } versions = { # Tooling checker-qual = "3.22.0" errorprone = "2.13.1" + gremlin = "0.0.1-SNAPSHOT" # Testing truth = "1.1.3" @@ -71,6 +73,7 @@ dependencies = { # Tooling checker-qual = {group = "org.checkerframework", name = "checker-qual", version.ref = "checker-qual"} errorprone = {group = "com.google.errorprone", name = "error_prone_core", version.ref = "errorprone"} + gremlin = {group = "xyz.jpenilla", name = "gremlin-runtime", version.ref = "gremlin"} # Google guava = {group = "com.google.guava", name = "guava", version.ref = "guava"} diff --git a/settings.gradle.kts b/settings.gradle.kts index c7610a3..8409008 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -1,3 +1,10 @@ +pluginManagement { + repositories { + gradlePluginPortal() + maven("https://repo.jpenilla.xyz/snapshots/") + } +} + plugins { id("ca.stellardrift.polyglot-version-catalogs") version "6.0.0" }