From 095acd24e4141f680edd5f61383a734247a8ae8a Mon Sep 17 00:00:00 2001 From: Timo Bryant Date: Mon, 22 Apr 2024 21:26:54 +0200 Subject: [PATCH] can load accounts --- buildSrc/src/main/kotlin/module-convention.gradle.kts | 8 ++++++++ modules/ModConfiguration/build.gradle.kts | 3 --- .../de/itkl/modConfiguration/loaders/AccountLoader.kt | 6 ++++-- .../kotlin/de/itkl/modConfiguration/types/Accounts.kt | 4 +++- .../modConfiguration/loaders/AccountLoaderTests.kt | 7 ++++++- .../src/test/resources/testAccounts.toml | 8 ++++++++ .../kotlin/de/itkl/moduleCore/support/controlFlow.kt | 5 +++++ .../de/itkl/moduleCore/support/resourceSupport.kt | 11 +++++++++++ 8 files changed, 45 insertions(+), 7 deletions(-) create mode 100644 modules/ModConfiguration/src/test/resources/testAccounts.toml create mode 100644 modules/ModuleCore/src/main/kotlin/de/itkl/moduleCore/support/controlFlow.kt create mode 100644 modules/ModuleCore/src/main/kotlin/de/itkl/moduleCore/support/resourceSupport.kt diff --git a/buildSrc/src/main/kotlin/module-convention.gradle.kts b/buildSrc/src/main/kotlin/module-convention.gradle.kts index 80bb554..cd24c10 100644 --- a/buildSrc/src/main/kotlin/module-convention.gradle.kts +++ b/buildSrc/src/main/kotlin/module-convention.gradle.kts @@ -24,3 +24,11 @@ testing { } } } + +dependencies { + testImplementation(platform("org.junit:junit-bom:5.10.2")) + testImplementation("org.junit.jupiter:junit-jupiter") + testRuntimeOnly("org.junit.platform:junit-platform-launcher") + + testImplementation("com.willowtreeapps.assertk:assertk:0.28.1") +} diff --git a/modules/ModConfiguration/build.gradle.kts b/modules/ModConfiguration/build.gradle.kts index fe2b0cf..a649321 100644 --- a/modules/ModConfiguration/build.gradle.kts +++ b/modules/ModConfiguration/build.gradle.kts @@ -4,7 +4,4 @@ dependencies { dependencies { implementation(libs.bundles.hoplite) - testImplementation(platform("org.junit:junit-bom:5.10.2")) - testImplementation("org.junit.jupiter:junit-jupiter") - testRuntimeOnly("org.junit.platform:junit-platform-launcher") } diff --git a/modules/ModConfiguration/src/main/kotlin/de/itkl/modConfiguration/loaders/AccountLoader.kt b/modules/ModConfiguration/src/main/kotlin/de/itkl/modConfiguration/loaders/AccountLoader.kt index a5d7d5f..4a07f6f 100644 --- a/modules/ModConfiguration/src/main/kotlin/de/itkl/modConfiguration/loaders/AccountLoader.kt +++ b/modules/ModConfiguration/src/main/kotlin/de/itkl/modConfiguration/loaders/AccountLoader.kt @@ -1,11 +1,13 @@ package de.itkl.modConfiguration.loaders import com.sksamuel.hoplite.ConfigLoaderBuilder -import de.itkl.modConfiguration.types.Account +import com.sksamuel.hoplite.addPathSource +import de.itkl.modConfiguration.types.Accounts import java.nio.file.Path -fun loadAccounts(path: Path): Map { +fun loadAccounts(path: Path): Accounts { return ConfigLoaderBuilder.default() + .addPathSource(path) .build() .loadConfigOrThrow() } diff --git a/modules/ModConfiguration/src/main/kotlin/de/itkl/modConfiguration/types/Accounts.kt b/modules/ModConfiguration/src/main/kotlin/de/itkl/modConfiguration/types/Accounts.kt index af2b4f3..5f6271f 100644 --- a/modules/ModConfiguration/src/main/kotlin/de/itkl/modConfiguration/types/Accounts.kt +++ b/modules/ModConfiguration/src/main/kotlin/de/itkl/modConfiguration/types/Accounts.kt @@ -1,3 +1,5 @@ package de.itkl.modConfiguration.types - +data class Accounts( + val account: Map, +) diff --git a/modules/ModConfiguration/src/test/kotlin/de/itkl/modConfiguration/loaders/AccountLoaderTests.kt b/modules/ModConfiguration/src/test/kotlin/de/itkl/modConfiguration/loaders/AccountLoaderTests.kt index 371d99d..0be6f4c 100644 --- a/modules/ModConfiguration/src/test/kotlin/de/itkl/modConfiguration/loaders/AccountLoaderTests.kt +++ b/modules/ModConfiguration/src/test/kotlin/de/itkl/modConfiguration/loaders/AccountLoaderTests.kt @@ -1,8 +1,13 @@ package de.itkl.modConfiguration.loaders +import de.itkl.moduleCore.support.requiredResourcePath import org.junit.jupiter.api.Test class AccountLoaderTests { @Test - fun testAccountLoad() {} + fun testAccountLoad() { + val accountsToml = requiredResourcePath("testAccounts.toml") + val accounts = loadAccounts(accountsToml) + println(accounts) + } } diff --git a/modules/ModConfiguration/src/test/resources/testAccounts.toml b/modules/ModConfiguration/src/test/resources/testAccounts.toml new file mode 100644 index 0000000..3ca4caf --- /dev/null +++ b/modules/ModConfiguration/src/test/resources/testAccounts.toml @@ -0,0 +1,8 @@ +[account."test user"] +name = "Sir Test" +password = "testitest" + +[account."test users wife"] +name = "Madam Test" +password = "testitest" + diff --git a/modules/ModuleCore/src/main/kotlin/de/itkl/moduleCore/support/controlFlow.kt b/modules/ModuleCore/src/main/kotlin/de/itkl/moduleCore/support/controlFlow.kt new file mode 100644 index 0000000..eb78241 --- /dev/null +++ b/modules/ModuleCore/src/main/kotlin/de/itkl/moduleCore/support/controlFlow.kt @@ -0,0 +1,5 @@ +package de.itkl.moduleCore.support + +fun T?.expect(message: () -> String): T { + return checkNotNull(this, message) +} diff --git a/modules/ModuleCore/src/main/kotlin/de/itkl/moduleCore/support/resourceSupport.kt b/modules/ModuleCore/src/main/kotlin/de/itkl/moduleCore/support/resourceSupport.kt new file mode 100644 index 0000000..53289be --- /dev/null +++ b/modules/ModuleCore/src/main/kotlin/de/itkl/moduleCore/support/resourceSupport.kt @@ -0,0 +1,11 @@ +package de.itkl.moduleCore.support + +import java.nio.file.Path +import java.nio.file.Paths + +fun requiredResourcePath(resourceName: String): Path { + return ClassLoader.getSystemResource(resourceName) + ?.toURI() + ?.let { Paths.get(it) } + .expect { "Resource not found $resourceName" } +}