From 3b265b5b59cb084443a35f7e71f9398725285d0d Mon Sep 17 00:00:00 2001 From: xypercode Date: Tue, 7 May 2024 19:35:36 +0200 Subject: [PATCH] =?UTF-8?q?=F0=9F=94=97=20General=20improvements?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/build.yml | 45 ++------ .idea/discord.xml | 5 + .idea/misc.xml | 2 +- build.gradle | 77 ------------- build.gradle.kts | 109 ++++++++++++++++++ gradle.properties | 4 +- src/main/java/dev/ultreon/ubo/DataIo.java | 11 +- .../dev/ultreon/tests/data/TypeTests.java | 6 + 8 files changed, 137 insertions(+), 122 deletions(-) delete mode 100644 build.gradle create mode 100644 build.gradle.kts diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index c33e6db..2b7e77e 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -12,51 +12,22 @@ jobs: matrix: # Use these Java versions java: [ - 17 # Minimum supported + 1.8 # Minimum supported ] # and run on both Linux and not Windows os: [ubuntu-20.04] runs-on: ${{ matrix.os }} + name: Build on ${{ matrix.os }} and Java ${{ matrix.java }} steps: - - name: checkout repository + - name: Checkout repository uses: actions/checkout@v2 - - name: validate gradle wrapper + - name: Validate gradle wrapper uses: gradle/wrapper-validation-action@v1 - - name: setup jdk ${{ matrix.java }} + - name: Setup jdk ${{ matrix.java }} uses: actions/setup-java@v1 with: java-version: ${{ matrix.java }} - - name: make gradle wrapper executable + - name: Make gradle wrapper executable run: chmod +x ./gradlew - - name: build - run: ./gradlew build - env: - GITHUB_BUILD_NUMBER: ${{ github.run_number }} - - name: capture the game's build artifacts - uses: actions/upload-artifact@v2 - with: - name: Ultreon Data Build ${{ github.run_number }} - path: build/libs/ - publish: - runs-on: ubuntu-latest - permissions: - contents: read - packages: write - steps: - - uses: actions/checkout@v3 - - uses: actions/setup-java@v3 - with: - java-version: '17' - distribution: 'adopt' - - name: make gradle wrapper executable - if: ${{ runner.os != 'Windows' }} - run: chmod +x ./gradlew - - name: Validate Gradle wrapper - uses: gradle/wrapper-validation-action@e6e38bacfdf1a337459f332974bb2327a31aaf4b - - name: Publish package - uses: gradle/gradle-build-action@67421db6bd0bf253fb4bd25b31ebb98943c375e1 - with: - arguments: publish - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - GITHUB_BUILD_NUMBER: ${{ github.run_number }} + - name: Build + run: ./gradlew build check --stacktrace --info --no-daemon diff --git a/.idea/discord.xml b/.idea/discord.xml index d8e9561..3aef922 100644 --- a/.idea/discord.xml +++ b/.idea/discord.xml @@ -3,5 +3,10 @@ \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml index 5a50b6c..bd15391 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -1,5 +1,5 @@ - + \ No newline at end of file diff --git a/build.gradle b/build.gradle deleted file mode 100644 index a558b70..0000000 --- a/build.gradle +++ /dev/null @@ -1,77 +0,0 @@ -plugins { - id 'java' - id 'java-library' - id 'maven-publish' -} - -apply plugin: 'java' -apply plugin: 'java-library' -apply plugin: 'maven-publish' - -group 'dev.ultreon' -version "${project_version}" - -base { - archivesName = "ubo" -} - -repositories { - mavenCentral() -} - -dependencies { - testImplementation 'org.junit.jupiter:junit-jupiter-api:5.8.1' - testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.8.1' - - compileOnly(group: 'org.jetbrains', name: 'annotations', version: '23.0.0') -} - -compileJava { - sourceCompatibility "1.8" - targetCompatibility "1.8" -} - -java { - withSourcesJar() -} - -test { - useJUnitPlatform() -} - -publishing { - publications { - register('mavenJava', MavenPublication) { - from components.java - } - } - repositories { - maven { - url "file://${rootProject.projectDir}/.mvnrepo" - } - } -} - -test { - useJUnitPlatform() -} - -publish.dependsOn build - -tasks.withType(GenerateModuleMetadata) { - enabled = false -} - -afterEvaluate { - javadoc { - source(sourceSets.main.allJava.sourceDirectories) - title = "Ultreon Data API (UBO/USO)" - description = "Extensible NBT-like data API." - setDestinationDir(file("$rootProject.projectDir/build/docs/javadoc")) - // Configure the classpath - classpath = files(sourceSets.main.compileClasspath) - (options as StandardJavadocDocletOptions).links( - // Kinda empty in here lmao. - ) - } -} diff --git a/build.gradle.kts b/build.gradle.kts new file mode 100644 index 0000000..39ee80a --- /dev/null +++ b/build.gradle.kts @@ -0,0 +1,109 @@ +plugins { + id("java") + id("java-library") + id("maven-publish") + +} + +apply(plugin="java") +apply(plugin="java-library") +apply(plugin="maven-publish") +apply(plugin="signing") + +group = project.property("group")!! +version = "${project.property("version")}" + +base { + archivesName.set(project.property("archivesBaseName").toString()) +} + +repositories { + mavenCentral() +} + +dependencies { + testImplementation("org.junit.jupiter:junit-jupiter-api:5.8.1") + testRuntimeOnly("org.junit.jupiter:junit-jupiter-engine:5.8.1") + + compileOnly("org.jetbrains:annotations:23.0.0") +} + +//tasks.compileJava { +// sourceCompatibility = JavaVersion("1.8") +// targetCompatibility = JavaVersion("1.8") +//} + +java { + withSourcesJar() + withJavadocJar() +} + +tasks.test { + useJUnitPlatform() +} + +publishing { + publications { + register("mavenJava", MavenPublication::class) { + from(components["java"]) + } + } + repositories { + maven { + url = uri("file://${rootProject.projectDir}/.mvnrepo") + } + + val ossrhUsername = findProperty("ossrh.username") ?: System.getenv("OSSRH_USERNAME") + val ossrhPassword = findProperty("ossrh.password") ?: System.getenv("OSSRH_PASSWORD") + + maven { + name = "OssSonatype" + url = uri("https://s01.oss.sonatype.org/service/local/staging/deploy/maven2/") + credentials { + if (ossrhUsername != null && ossrhPassword != null) { + username = ossrhUsername.toString() + password = ossrhPassword.toString() + } + } + } + + maven { + name = "OssSnapshots" + url = uri("https://s01.oss.sonatype.org/content/repositories/snapshots/") + credentials { + if (ossrhUsername != null && ossrhPassword != null) { + username = ossrhUsername.toString() + password = ossrhPassword.toString() + } + } + } + } +} + +tasks.test { + useJUnitPlatform() +} + +tasks.publish.get().dependsOn(tasks.build) + +tasks.withType { + enabled = false +} + +//tasks.signing { +// sign(configurations["archives"]) +//} + +afterEvaluate { + tasks.javadoc { +// source(sourceSets.main.allJava.sourceDirectories) +// title = "Ultreon Data API (UBO/USO)" +// description = "Extensible NBT-like data API." +// setDestinationDir(file("$rootProject.projectDir/build/docs/javadoc")) +// // Configure the classpath +// classpath = files(sourceSets.main.compileClasspath) +// (options as StandardJavadocDocletOptions).links( +// // Kinda empty in here lmao. +// ) + } +} diff --git a/gradle.properties b/gradle.properties index 844cf7d..790f07d 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1 +1,3 @@ -project_version=1.3.0 +group=dev.ultreon +archivesBaseName=ubo +version=1.4.0 diff --git a/src/main/java/dev/ultreon/ubo/DataIo.java b/src/main/java/dev/ultreon/ubo/DataIo.java index 7fde722..407e28d 100644 --- a/src/main/java/dev/ultreon/ubo/DataIo.java +++ b/src/main/java/dev/ultreon/ubo/DataIo.java @@ -5,18 +5,18 @@ import java.io.*; import java.net.URL; +import java.nio.file.Files; import java.util.zip.GZIPInputStream; import java.util.zip.GZIPOutputStream; public class DataIo { - private static final short VERSION = 3; private static final int HEADER = 0xff804269; private static final int BUFFER_SIZE = 4096; @SafeVarargs public static > T read(File file, T... type) throws IOException { - try (InputStream stream = new BufferedInputStream(new FileInputStream(file), BUFFER_SIZE)) { + try (InputStream stream = new BufferedInputStream(Files.newInputStream(file.toPath()), BUFFER_SIZE)) { return read(stream, type); } } @@ -33,7 +33,6 @@ public static > T read(URL url, T... type) throws IOException * @throws DataTypeException when the read data type is invalid. */ @SafeVarargs - @SuppressWarnings("unchecked") public static > T read(InputStream stream, T... type) throws IOException { if (stream instanceof DataInput) { return read((DataInput) stream, type); @@ -71,7 +70,7 @@ public static > T read(DataInput input, T... type) throws IOE @SafeVarargs public static > T readCompressed(File file, T... type) throws IOException { - try (InputStream stream = new BufferedInputStream(new FileInputStream(file), BUFFER_SIZE)) { + try (InputStream stream = new BufferedInputStream(Files.newInputStream(file.toPath()), BUFFER_SIZE)) { return readCompressed(stream, type); } } @@ -90,7 +89,7 @@ public static > T readCompressed(InputStream stream, T... typ } public static void write(IType type, File file) throws IOException { - try (OutputStream stream = new BufferedOutputStream(new FileOutputStream(file), BUFFER_SIZE)) { + try (OutputStream stream = new BufferedOutputStream(Files.newOutputStream(file.toPath()), BUFFER_SIZE)) { write(type, stream); } } @@ -122,7 +121,7 @@ public static void writeCompressed(IType type, URL file) throws IOException { } public static void writeCompressed(IType type, File file) throws IOException { - try (OutputStream stream = new BufferedOutputStream(new FileOutputStream(file), BUFFER_SIZE)) { + try (OutputStream stream = new BufferedOutputStream(Files.newOutputStream(file.toPath()), BUFFER_SIZE)) { writeCompressed(type, stream); } } diff --git a/src/test/java/dev/ultreon/tests/data/TypeTests.java b/src/test/java/dev/ultreon/tests/data/TypeTests.java index 622541a..566af0d 100644 --- a/src/test/java/dev/ultreon/tests/data/TypeTests.java +++ b/src/test/java/dev/ultreon/tests/data/TypeTests.java @@ -30,6 +30,12 @@ void listTypes() { Assertions.assertEquals(list.size(), 5); + Assertions.assertDoesNotThrow(() -> { + for (StringType s : list) { + Assertions.assertNotNull(s); + } + }); + list.remove(0); Assertions.assertEquals(list.size(), 4);