From 15e8ceb19ff6ad9f1b5f3c80d73b4482522ad389 Mon Sep 17 00:00:00 2001 From: Traqueur <54551467+Traqueur-dev@users.noreply.github.com> Date: Wed, 19 Nov 2025 15:39:36 +0100 Subject: [PATCH 01/10] Feat/local date time (#19) * feat: add local date time * feat: add test case --- .../fr/traqueur/structura/conversion/ValueConverter.java | 6 ++++++ .../traqueur/structura/conversion/ValueConverterTest.java | 8 ++++++++ 2 files changed, 14 insertions(+) diff --git a/src/main/java/fr/traqueur/structura/conversion/ValueConverter.java b/src/main/java/fr/traqueur/structura/conversion/ValueConverter.java index 6f80dbd..a4a9f75 100644 --- a/src/main/java/fr/traqueur/structura/conversion/ValueConverter.java +++ b/src/main/java/fr/traqueur/structura/conversion/ValueConverter.java @@ -10,6 +10,7 @@ import java.lang.reflect.ParameterizedType; import java.lang.reflect.Type; import java.time.LocalDate; +import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; import java.util.*; import java.util.stream.Collectors; @@ -21,6 +22,7 @@ public class ValueConverter { private static final DateTimeFormatter DATE_FORMATTER = DateTimeFormatter.ISO_LOCAL_DATE; + private static final DateTimeFormatter DATE_TIME_FORMATTER = DateTimeFormatter.ISO_LOCAL_DATE_TIME; private final RecordInstanceFactory recordFactory; @@ -277,6 +279,10 @@ private Object convertPrimitive(Object value, Class targetType, String prefix return LocalDate.parse(value.toString(), DATE_FORMATTER); } + if(targetType == LocalDateTime.class) { + return LocalDateTime.parse(value.toString(), DATE_TIME_FORMATTER); + } + if (targetType == int.class || targetType == Integer.class) { return value instanceof Number n ? n.intValue() : Integer.parseInt(value.toString()); } diff --git a/src/test/java/fr/traqueur/structura/conversion/ValueConverterTest.java b/src/test/java/fr/traqueur/structura/conversion/ValueConverterTest.java index bc3bc8c..92f55cf 100644 --- a/src/test/java/fr/traqueur/structura/conversion/ValueConverterTest.java +++ b/src/test/java/fr/traqueur/structura/conversion/ValueConverterTest.java @@ -9,6 +9,7 @@ import java.lang.reflect.ParameterizedType; import java.lang.reflect.Type; +import java.time.LocalDateTime; import java.util.Collection; import java.util.List; import java.util.Map; @@ -108,6 +109,13 @@ void shouldHandleLocalDateConversion() { var localDate = java.time.LocalDate.of(2023, 10, 5); assertEquals(localDate, valueConverter.convert("2023-10-05", java.time.LocalDate.class, "test")); } + + @Test + @DisplayName("Should handle LocalDateTime conversion from string") + void shouldHandleLocalDateTimeConversion() { + var localDate = LocalDateTime.of(2023, 10, 5, 14, 30, 0); + assertEquals(localDate, valueConverter.convert("2023-10-05T14:30:00", LocalDateTime.class, "test")); + } } @Nested From a7fff622d9d681570a2f6d70a6fb3afac1788a8a Mon Sep 17 00:00:00 2001 From: Traqueur <54551467+Traqueur-dev@users.noreply.github.com> Date: Wed, 19 Nov 2025 15:39:59 +0100 Subject: [PATCH 02/10] feat: add publish on groupez (#20) --- .github/workflows/build.yml | 30 ++++++++++++++++++++++++++++++ build.gradle.kts | 30 ++++++++++++++++++++++-------- settings.gradle.kts | 10 ++++++++++ 3 files changed, 62 insertions(+), 8 deletions(-) create mode 100644 .github/workflows/build.yml diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 0000000..c80b256 --- /dev/null +++ b/.github/workflows/build.yml @@ -0,0 +1,30 @@ +name: Build Action + +on: + push: + branches: [ main, develop ] + pull_request: + types: [ opened, synchronize, reopened ] + workflow_dispatch: + +permissions: + contents: read + packages: write + +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + +jobs: + build: + name: Build and Publish Structura + uses: GroupeZ-dev/actions/.github/workflows/build.yml@main + with: + project-name: "Structura" + publish: true + publish-on-discord: false + project-to-publish: "publish" + secrets: + MAVEN_USERNAME: ${{ secrets.MAVEN_USERNAME }} + MAVEN_PASSWORD: ${{ secrets.MAVEN_PASSWORD }} + WEBHOOK_URL: "" \ No newline at end of file diff --git a/build.gradle.kts b/build.gradle.kts index 497e8c0..da87f0d 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -2,12 +2,21 @@ import java.util.* plugins { id("java-library") - id("maven-publish") + id("re.alwyn974.groupez.publish") version "1.0.0" + id("com.gradleup.shadow") version "9.0.0-beta11" } group = "fr.traqueur" version = property("version")!! +rootProject.extra.properties["sha"]?.let { sha -> + version = sha +} + +extra.set("targetFolder", file("target/")) +extra.set("classifier", System.getProperty("archive.classifier")) +extra.set("sha", System.getProperty("github.sha")) + repositories { mavenCentral() } @@ -56,6 +65,14 @@ tasks.register("generateVersionProperties") { } } +tasks.build { + dependsOn(tasks.shadowJar) +} + +tasks.shadowJar { + archiveClassifier.set("") +} + tasks.processResources { dependsOn("generateVersionProperties") } @@ -65,10 +82,7 @@ java { withJavadocJar() } -publishing { - publications { - create("maven") { - from(components["java"]) - } - } -} +publishConfig { + githubOwner = "Traqueur-dev" + useRootProjectName = true +} \ No newline at end of file diff --git a/settings.gradle.kts b/settings.gradle.kts index 50c8ff2..08842a3 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -1 +1,11 @@ rootProject.name = "Structura" + +pluginManagement { + repositories { + maven { + name = "groupezReleases" + url = uri("https://repo.groupez.dev/releases") + } + gradlePluginPortal() + } +} \ No newline at end of file From 4b17bcf7fc3c0f1ee3c5c6c2000213df936a4c5e Mon Sep 17 00:00:00 2001 From: Traqueur <54551467+Traqueur-dev@users.noreply.github.com> Date: Wed, 19 Nov 2025 15:43:58 +0100 Subject: [PATCH 03/10] feat: add target folder (#21) --- .gitignore | 1 + build.gradle.kts | 7 ++++++- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index cd0d9ee..559cbb1 100644 --- a/.gitignore +++ b/.gitignore @@ -5,6 +5,7 @@ build/ !**/src/main/**/build/ !**/src/test/**/build/ CLAUDE.md +target/ ### IntelliJ IDEA ### .idea/modules.xml diff --git a/build.gradle.kts b/build.gradle.kts index da87f0d..801fb38 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -70,7 +70,12 @@ tasks.build { } tasks.shadowJar { - archiveClassifier.set("") + rootProject.extra.properties["sha"]?.let { sha -> + archiveClassifier.set("${rootProject.extra.properties["classifier"]}-${sha}") + } ?: run { + archiveClassifier.set(rootProject.extra.properties["classifier"] as String?) + } + destinationDirectory.set(rootProject.extra["targetFolder"] as File) } tasks.processResources { From 156cfcdbe274176c363338a24d2f4653694bb78a Mon Sep 17 00:00:00 2001 From: Traqueur <54551467+Traqueur-dev@users.noreply.github.com> Date: Wed, 19 Nov 2025 16:18:51 +0100 Subject: [PATCH 04/10] Fix/publish (#22) * feat: add target folder * feat: update readme * fix publish --- README.md | 4 ++-- build.gradle.kts | 8 ++++---- gradle/wrapper/gradle-wrapper.properties | 2 +- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index 6263504..f6ad601 100644 --- a/README.md +++ b/README.md @@ -25,11 +25,11 @@ Add Structura to your project: ```gradle repository { - maven { url = "https://jitpack.io" } // JitPack repository for Structura + maven { url = "https://repo.groupez.dev/releases" } // Add Structura repository replace releases with snapshots if needed } dependencies { - implementation("com.github.Traqueur-dev:Structura:") // Replace with the latest release + implementation("fr.traqueur:structura:") // Replace with the latest release implementation("org.yaml:snakeyaml:2.4") // Required for YAML parsing } ``` diff --git a/build.gradle.kts b/build.gradle.kts index 801fb38..847f1f1 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -9,14 +9,14 @@ plugins { group = "fr.traqueur" version = property("version")!! -rootProject.extra.properties["sha"]?.let { sha -> - version = sha -} - extra.set("targetFolder", file("target/")) extra.set("classifier", System.getProperty("archive.classifier")) extra.set("sha", System.getProperty("github.sha")) +rootProject.extra.properties["sha"]?.let { sha -> + version = sha +} + repositories { mavenCentral() } diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 6b04d56..6826537 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ #Tue Mar 25 10:59:06 CET 2025 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.10-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.14-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists From 521202a7f1e13779e958ef307f0dcb14b3121a21 Mon Sep 17 00:00:00 2001 From: Traqueur_ Date: Wed, 19 Nov 2025 16:29:47 +0100 Subject: [PATCH 05/10] fix: remove sha version replacement --- build.gradle.kts | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/build.gradle.kts b/build.gradle.kts index 847f1f1..c6b44a3 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -13,10 +13,6 @@ extra.set("targetFolder", file("target/")) extra.set("classifier", System.getProperty("archive.classifier")) extra.set("sha", System.getProperty("github.sha")) -rootProject.extra.properties["sha"]?.let { sha -> - version = sha -} - repositories { mavenCentral() } @@ -70,6 +66,8 @@ tasks.build { } tasks.shadowJar { + archiveBaseName.set(project.name) + archiveVersion.set(project.version.toString()) rootProject.extra.properties["sha"]?.let { sha -> archiveClassifier.set("${rootProject.extra.properties["classifier"]}-${sha}") } ?: run { From 15dd301e6555cd641fcf93ced351ab2cc2a035d6 Mon Sep 17 00:00:00 2001 From: Traqueur_ Date: Wed, 19 Nov 2025 16:53:06 +0100 Subject: [PATCH 06/10] feat: test without version --- build.gradle.kts | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/build.gradle.kts b/build.gradle.kts index c6b44a3..4312805 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -7,7 +7,7 @@ plugins { } group = "fr.traqueur" -version = property("version")!! +version = property("version") as String extra.set("targetFolder", file("target/")) extra.set("classifier", System.getProperty("archive.classifier")) @@ -66,8 +66,7 @@ tasks.build { } tasks.shadowJar { - archiveBaseName.set(project.name) - archiveVersion.set(project.version.toString()) + archiveVersion.set("") rootProject.extra.properties["sha"]?.let { sha -> archiveClassifier.set("${rootProject.extra.properties["classifier"]}-${sha}") } ?: run { @@ -85,7 +84,3 @@ java { withJavadocJar() } -publishConfig { - githubOwner = "Traqueur-dev" - useRootProjectName = true -} \ No newline at end of file From a56f1147691594eab3fa3709a37c36a1205f7c95 Mon Sep 17 00:00:00 2001 From: Traqueur_ Date: Wed, 19 Nov 2025 16:59:02 +0100 Subject: [PATCH 07/10] feat: reproduce another lib to try --- build.gradle.kts | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/build.gradle.kts b/build.gradle.kts index 4312805..f08b978 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -9,6 +9,10 @@ plugins { group = "fr.traqueur" version = property("version") as String +rootProject.extra.properties["sha"]?.let { sha -> + version = sha +} + extra.set("targetFolder", file("target/")) extra.set("classifier", System.getProperty("archive.classifier")) extra.set("sha", System.getProperty("github.sha")) @@ -66,12 +70,7 @@ tasks.build { } tasks.shadowJar { - archiveVersion.set("") - rootProject.extra.properties["sha"]?.let { sha -> - archiveClassifier.set("${rootProject.extra.properties["classifier"]}-${sha}") - } ?: run { - archiveClassifier.set(rootProject.extra.properties["classifier"] as String?) - } + archiveClassifier.set("") destinationDirectory.set(rootProject.extra["targetFolder"] as File) } From 6462e2e679ed8d7a5e4a8afaba26fa1af2af4950 Mon Sep 17 00:00:00 2001 From: Traqueur_ Date: Wed, 19 Nov 2025 16:59:52 +0100 Subject: [PATCH 08/10] fix: order in methods --- build.gradle.kts | 8 ++++---- src/main/resources/structura.properties | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/build.gradle.kts b/build.gradle.kts index f08b978..3c26398 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -9,14 +9,14 @@ plugins { group = "fr.traqueur" version = property("version") as String -rootProject.extra.properties["sha"]?.let { sha -> - version = sha -} - extra.set("targetFolder", file("target/")) extra.set("classifier", System.getProperty("archive.classifier")) extra.set("sha", System.getProperty("github.sha")) +rootProject.extra.properties["sha"]?.let { sha -> + version = sha +} + repositories { mavenCentral() } diff --git a/src/main/resources/structura.properties b/src/main/resources/structura.properties index 6eb5849..190c87c 100644 --- a/src/main/resources/structura.properties +++ b/src/main/resources/structura.properties @@ -1 +1 @@ -version=1.5.0 \ No newline at end of file +version=4b17bcf \ No newline at end of file From 39ccbe8ab33795b0cfdd75894ff9fba05e421861 Mon Sep 17 00:00:00 2001 From: Traqueur_ Date: Wed, 19 Nov 2025 17:03:33 +0100 Subject: [PATCH 09/10] feat: version --- gradle.properties | 2 +- src/main/resources/structura.properties | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/gradle.properties b/gradle.properties index 6eb5849..46f2d21 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1 +1 @@ -version=1.5.0 \ No newline at end of file +version=1.6.0 \ No newline at end of file diff --git a/src/main/resources/structura.properties b/src/main/resources/structura.properties index 190c87c..46f2d21 100644 --- a/src/main/resources/structura.properties +++ b/src/main/resources/structura.properties @@ -1 +1 @@ -version=4b17bcf \ No newline at end of file +version=1.6.0 \ No newline at end of file From d5236176542fa78634d54b9d9a707fb95698e0b3 Mon Sep 17 00:00:00 2001 From: Traqueur <54551467+Traqueur-dev@users.noreply.github.com> Date: Wed, 19 Nov 2025 17:20:34 +0100 Subject: [PATCH 10/10] Add publishConfig for GitHub package publishing --- build.gradle.kts | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/build.gradle.kts b/build.gradle.kts index 3c26398..c69f7e4 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -83,3 +83,7 @@ java { withJavadocJar() } +publishConfig { + githubOwner = "Traqueur-dev" + useRootProjectName = true +}