From 4a73301eb311966817639b7859e2ee74d2e04ee1 Mon Sep 17 00:00:00 2001 From: Hartmut Bauer Date: Sun, 18 Jan 2026 17:17:53 +0100 Subject: [PATCH] Umstellung auf Kotlin Multiplatform --- .idea/AndroidProjectSystem.xml | 6 + .idea/artifacts/util_js_0_2_8.xml | 8 ++ .idea/artifacts/util_js_0_3_0_beta_1.xml | 8 ++ .idea/artifacts/util_jvm_0_2_8.xml | 8 ++ .idea/artifacts/util_jvm_0_3_0_beta_1.xml | 8 ++ .idea/artifacts/util_wasm_js_0_2_8.xml | 8 ++ .idea/artifacts/util_wasm_js_0_3_0_beta_1.xml | 8 ++ .idea/artifacts/util_wasm_wasi_0_2_8.xml | 8 ++ .../artifacts/util_wasm_wasi_0_3_0_beta_1.xml | 8 ++ .idea/compiler.xml | 6 + .idea/misc.xml | 2 +- .idea/modules.xml | 8 ++ .idea/modules/util.jvmMain.iml | 8 ++ build.gradle.kts | 124 ++++++++++++++---- buildnumber.properties | 4 +- settings.gradle.kts | 2 +- .../kotlin/net/keinekekse/args/priv.kt | 13 +- .../kotlin/net/keinekekse/args/pub.kt | 9 +- .../kotlin/net/keinekekse/util/Version.kt | 14 +- .../kotlin/net/keinekekse/util/delegate.kt | 0 .../kotlin/net/keinekekse/version/Version.kt | 0 .../net/keinekekse/args/annotation/api.kt | 0 .../net/keinekekse/args/annotation/impl.kt | 0 .../kotlin/net/keinekekse/args/priv.jvm.kt | 7 + .../net/keinekekse/args/v1/arguments.kt | 0 .../kotlin/net/keinekekse/config/init.kt | 0 .../net/keinekekse/config/system_config.kt | 0 .../net/keinekekse/config/user_config.kt | 0 .../kotlin/net/keinekekse/exec/exec.kt | 0 .../kotlin/net/keinekekse/util/net.kt | 0 .../keinekekse/version/manifest/version.kt | 0 .../net/keinekekse/args/priv.linuxX64.kt | 8 ++ .../net/keinekekse/args/priv.macosArm64.kt | 8 ++ .../net/keinekekse/args/priv.wasmWasi.kt | 5 + .../kotlin/net/keinekekse/args/priv.web.kt | 5 + 35 files changed, 246 insertions(+), 47 deletions(-) create mode 100644 .idea/AndroidProjectSystem.xml create mode 100644 .idea/artifacts/util_js_0_2_8.xml create mode 100644 .idea/artifacts/util_js_0_3_0_beta_1.xml create mode 100644 .idea/artifacts/util_jvm_0_2_8.xml create mode 100644 .idea/artifacts/util_jvm_0_3_0_beta_1.xml create mode 100644 .idea/artifacts/util_wasm_js_0_2_8.xml create mode 100644 .idea/artifacts/util_wasm_js_0_3_0_beta_1.xml create mode 100644 .idea/artifacts/util_wasm_wasi_0_2_8.xml create mode 100644 .idea/artifacts/util_wasm_wasi_0_3_0_beta_1.xml create mode 100644 .idea/compiler.xml create mode 100644 .idea/modules.xml create mode 100644 .idea/modules/util.jvmMain.iml rename src/{main => commonMain}/kotlin/net/keinekekse/args/priv.kt (97%) rename src/{main => commonMain}/kotlin/net/keinekekse/args/pub.kt (98%) rename src/{main => commonMain}/kotlin/net/keinekekse/util/Version.kt (51%) rename src/{main => commonMain}/kotlin/net/keinekekse/util/delegate.kt (100%) rename src/{main => commonMain}/kotlin/net/keinekekse/version/Version.kt (100%) rename src/{main => jvmMain}/kotlin/net/keinekekse/args/annotation/api.kt (100%) rename src/{main => jvmMain}/kotlin/net/keinekekse/args/annotation/impl.kt (100%) create mode 100644 src/jvmMain/kotlin/net/keinekekse/args/priv.jvm.kt rename src/{main => jvmMain}/kotlin/net/keinekekse/args/v1/arguments.kt (100%) rename src/{main => jvmMain}/kotlin/net/keinekekse/config/init.kt (100%) rename src/{main => jvmMain}/kotlin/net/keinekekse/config/system_config.kt (100%) rename src/{main => jvmMain}/kotlin/net/keinekekse/config/user_config.kt (100%) rename src/{main => jvmMain}/kotlin/net/keinekekse/exec/exec.kt (100%) rename src/{main => jvmMain}/kotlin/net/keinekekse/util/net.kt (100%) rename src/{main => jvmMain}/kotlin/net/keinekekse/version/manifest/version.kt (100%) create mode 100644 src/linuxX64Main/kotlin/net/keinekekse/args/priv.linuxX64.kt create mode 100644 src/macosArm64Main/kotlin/net/keinekekse/args/priv.macosArm64.kt create mode 100644 src/wasmWasiMain/kotlin/net/keinekekse/args/priv.wasmWasi.kt create mode 100644 src/webMain/kotlin/net/keinekekse/args/priv.web.kt diff --git a/.idea/AndroidProjectSystem.xml b/.idea/AndroidProjectSystem.xml new file mode 100644 index 0000000..4a53bee --- /dev/null +++ b/.idea/AndroidProjectSystem.xml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/.idea/artifacts/util_js_0_2_8.xml b/.idea/artifacts/util_js_0_2_8.xml new file mode 100644 index 0000000..0ba6a2b --- /dev/null +++ b/.idea/artifacts/util_js_0_2_8.xml @@ -0,0 +1,8 @@ + + + $PROJECT_DIR$/build/libs + + + + + \ No newline at end of file diff --git a/.idea/artifacts/util_js_0_3_0_beta_1.xml b/.idea/artifacts/util_js_0_3_0_beta_1.xml new file mode 100644 index 0000000..4bbd519 --- /dev/null +++ b/.idea/artifacts/util_js_0_3_0_beta_1.xml @@ -0,0 +1,8 @@ + + + $PROJECT_DIR$/build/libs + + + + + \ No newline at end of file diff --git a/.idea/artifacts/util_jvm_0_2_8.xml b/.idea/artifacts/util_jvm_0_2_8.xml new file mode 100644 index 0000000..8fa3d1f --- /dev/null +++ b/.idea/artifacts/util_jvm_0_2_8.xml @@ -0,0 +1,8 @@ + + + $PROJECT_DIR$/build/libs + + + + + \ No newline at end of file diff --git a/.idea/artifacts/util_jvm_0_3_0_beta_1.xml b/.idea/artifacts/util_jvm_0_3_0_beta_1.xml new file mode 100644 index 0000000..55dfb20 --- /dev/null +++ b/.idea/artifacts/util_jvm_0_3_0_beta_1.xml @@ -0,0 +1,8 @@ + + + $PROJECT_DIR$/build/libs + + + + + \ No newline at end of file diff --git a/.idea/artifacts/util_wasm_js_0_2_8.xml b/.idea/artifacts/util_wasm_js_0_2_8.xml new file mode 100644 index 0000000..50d7e15 --- /dev/null +++ b/.idea/artifacts/util_wasm_js_0_2_8.xml @@ -0,0 +1,8 @@ + + + $PROJECT_DIR$/build/libs + + + + + \ No newline at end of file diff --git a/.idea/artifacts/util_wasm_js_0_3_0_beta_1.xml b/.idea/artifacts/util_wasm_js_0_3_0_beta_1.xml new file mode 100644 index 0000000..a229bf4 --- /dev/null +++ b/.idea/artifacts/util_wasm_js_0_3_0_beta_1.xml @@ -0,0 +1,8 @@ + + + $PROJECT_DIR$/build/libs + + + + + \ No newline at end of file diff --git a/.idea/artifacts/util_wasm_wasi_0_2_8.xml b/.idea/artifacts/util_wasm_wasi_0_2_8.xml new file mode 100644 index 0000000..587e6c4 --- /dev/null +++ b/.idea/artifacts/util_wasm_wasi_0_2_8.xml @@ -0,0 +1,8 @@ + + + $PROJECT_DIR$/build/libs + + + + + \ No newline at end of file diff --git a/.idea/artifacts/util_wasm_wasi_0_3_0_beta_1.xml b/.idea/artifacts/util_wasm_wasi_0_3_0_beta_1.xml new file mode 100644 index 0000000..b4fdd03 --- /dev/null +++ b/.idea/artifacts/util_wasm_wasi_0_3_0_beta_1.xml @@ -0,0 +1,8 @@ + + + $PROJECT_DIR$/build/libs + + + + + \ No newline at end of file diff --git a/.idea/compiler.xml b/.idea/compiler.xml new file mode 100644 index 0000000..bcf4711 --- /dev/null +++ b/.idea/compiler.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml index 7c47dd4..c0278ba 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -4,5 +4,5 @@ - + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 0000000..a0f0f48 --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/modules/util.jvmMain.iml b/.idea/modules/util.jvmMain.iml new file mode 100644 index 0000000..2c83a31 --- /dev/null +++ b/.idea/modules/util.jvmMain.iml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/build.gradle.kts b/build.gradle.kts index 4843d18..ad72d7a 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -1,12 +1,15 @@ -@file:OptIn(ExperimentalKotlinGradlePluginApi::class) +//@file:OptIn(ExperimentalKotlinGradlePluginApi::class) +@file:OptIn(ExperimentalWasmDsl::class) -import org.jetbrains.kotlin.gradle.ExperimentalKotlinGradlePluginApi +import org.jetbrains.kotlin.gradle.ExperimentalWasmDsl +import org.jetbrains.kotlin.gradle.dsl.JvmTarget plugins { - kotlin("jvm") version masterLibs.versions.kotlinVersion - `java-library` +// kotlin("jvm") version masterLibs.versions.kotlinVersion +// `java-library` `maven-publish` alias(masterLibs.plugins.dokkaPlugin) + alias(masterLibs.plugins.kotlinMultiplatformPlugin) alias(masterLibs.plugins.versionPlugin) } @@ -20,27 +23,98 @@ repositories { maven("https://nexus.keinekekse.net/repository/maven-public/") } -dependencies { - implementation(masterLibs.kotlinxSerialization) - // f. cmd line via annotation KMP? - implementation(kotlin("reflect")) - -} - -java { - toolchain { - languageVersion.set(JavaLanguageVersion.of(masterLibs.versions.javaVersion.get())) - } - withSourcesJar() -} +//dependencies { +// implementation(masterLibs.kotlinxSerialization) +// // f. cmd line via annotation KMP? +// implementation(kotlin("reflect")) +// +//} kotlin { - jvmToolchain(masterLibs.versions.javaVersion.get().toInt()) -// compilerOptions { -// languageVersion.set(org.jetbrains.kotlin.gradle.dsl.KotlinVersion.KOTLIN_2_3) -// } +// explicitApi() + + jvm { + compilerOptions.jvmTarget = + JvmTarget.valueOf("JVM_" + masterLibs.versions.javaVersion.get()) //JvmTarget.JVM_1_8 + } + + js { + browser { + testTask { + useKarma { + useChromeHeadless() + } + } + } + nodejs() + } + + wasmJs { + browser { + testTask { + useKarma { + useChromeHeadless() + } + } + } + nodejs() + } + + wasmWasi { + nodejs() + } + +// macosX64() + macosArm64() + +// iosX64() +// iosArm64() +// iosSimulatorArm64() + +// watchosArm32() +// watchosArm64() +// watchosX64() +// watchosSimulatorArm64() +// watchosDeviceArm64() + +// tvosArm64() +// tvosX64() +// tvosSimulatorArm64() + +// mingwX64() + + linuxX64() +// linuxArm64() + +// androidNativeArm32() +// androidNativeArm64() +// androidNativeX86() +// androidNativeX64() + + applyDefaultHierarchyTemplate() + + sourceSets { + commonMain.dependencies { + implementation(masterLibs.kotlinxSerialization) + } + jvmMain.dependencies { + implementation(kotlin("reflect")) + } + +// commonTest.dependencies { +// implementation(libs.kotlin.test) +// implementation(libs.serialization.json) +// } + } } +//kotlin { +// jvmToolchain(masterLibs.versions.javaVersion.get().toInt()) +//// compilerOptions { +//// languageVersion.set(org.jetbrains.kotlin.gradle.dsl.KotlinVersion.KOTLIN_2_3) +//// } +//} + /* Generierte Dokka-Doku als javadoc.jar ausgeben (s.a. "publishing") tasks.register("dokkaJar") { group = "build" @@ -62,10 +136,10 @@ publishing { url = uri("https://nexus.keinekekse.net/repository/maven-releases/") } } - publications.create("maven") { - from(components["java"]) -// artifact(tasks["dokkaJar"]) - } +// publications.create("maven") { +// from(components["java"]) +//// artifact(tasks["dokkaJar"]) +// } } // ./gradlew dokkaGenerate diff --git a/buildnumber.properties b/buildnumber.properties index 4d39833..5efe45f 100644 --- a/buildnumber.properties +++ b/buildnumber.properties @@ -1,3 +1,3 @@ #auto generated -#Sun Jan 18 02:02:24 CET 2026 -build.number=106 +#Sun Jan 18 17:08:09 CET 2026 +build.number=109 diff --git a/settings.gradle.kts b/settings.gradle.kts index ab23bf9..212177d 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -19,7 +19,7 @@ dependencyResolutionManagement { versionCatalogs { create("masterLibs") { // from(files("gradle/masterlibs.versions.toml")) - from("net.keinekekse:version-catalog:107") + from("net.keinekekse:version-catalog:109") } } } diff --git a/src/main/kotlin/net/keinekekse/args/priv.kt b/src/commonMain/kotlin/net/keinekekse/args/priv.kt similarity index 97% rename from src/main/kotlin/net/keinekekse/args/priv.kt rename to src/commonMain/kotlin/net/keinekekse/args/priv.kt index 15ec705..2610210 100644 --- a/src/main/kotlin/net/keinekekse/args/priv.kt +++ b/src/commonMain/kotlin/net/keinekekse/args/priv.kt @@ -1,13 +1,14 @@ package net.keinekekse.args import net.keinekekse.version.Version -import kotlin.system.exitProcess + +expect fun exitApplication(rc: Int = 0): Nothing class VerifyParameterException(message: String) : RuntimeException(message) fun showParsingError(msg: String): Nothing { - println(ArgumentParserException.PARSING_ERROR_MSG.format(msg)) - exitProcess(2) + println(ArgumentParserException.PARSING_ERROR_MSG + msg + "\n") + exitApplication(2) } /** @@ -311,10 +312,10 @@ class CommandLine( } e?.message?.let { println() - println(ArgumentParserException.PARSING_ERROR_MSG.format(it)) + println(ArgumentParserException.PARSING_ERROR_MSG + it + "\n") println() } - exitProcess(0) + exitApplication(0) } private fun showSubcommands(parameters: MutableMap) { @@ -346,7 +347,7 @@ class CommandLine( private fun showVersion(): Nothing { println("${programVersion.displayName} ${programVersion.fullVersion}, ${programVersion.copyright}\n") - exitProcess(0) + exitApplication(0) } } diff --git a/src/main/kotlin/net/keinekekse/args/pub.kt b/src/commonMain/kotlin/net/keinekekse/args/pub.kt similarity index 98% rename from src/main/kotlin/net/keinekekse/args/pub.kt rename to src/commonMain/kotlin/net/keinekekse/args/pub.kt index c2d8b70..bf11abc 100644 --- a/src/main/kotlin/net/keinekekse/args/pub.kt +++ b/src/commonMain/kotlin/net/keinekekse/args/pub.kt @@ -1,7 +1,6 @@ package net.keinekekse.args import kotlin.reflect.KProperty -import kotlin.system.exitProcess interface ValueDelegate { var value: T? @@ -152,8 +151,8 @@ interface AddParameter { // Fehler beim Check der Parameter-Definitionen und beim Parsen der Kommandozeile internal class ArgumentParserException(message: String?) : RuntimeException(message) { companion object { - const val PARSING_ERROR_MSG = "\n*** ERROR parsing arguments: %s\n" - const val DEFINITION_ERROR_MSG = "\n*** ERROR defining arguments: %s\n" + const val PARSING_ERROR_MSG = "\n*** ERROR parsing arguments: " + const val DEFINITION_ERROR_MSG = "\n*** ERROR defining arguments: " fun showHelp() = ArgumentParserException(null) fun noHelpOrVersion() = ArgumentParserException("Option 'help' and option 'version' are not allowed.") @@ -226,6 +225,6 @@ internal fun matchArgument(arg: String): Pair? = ARGUMENT_PATTERN.matchEntire(arg)?.groupValues?.let { Pair(it[1] + it[2], it[3]) } internal fun showDefiningError(msg: String): Nothing { - println(ArgumentParserException.DEFINITION_ERROR_MSG.format(msg)) - exitProcess(1) + println(ArgumentParserException.DEFINITION_ERROR_MSG + msg + "\n") + exitApplication(1) } diff --git a/src/main/kotlin/net/keinekekse/util/Version.kt b/src/commonMain/kotlin/net/keinekekse/util/Version.kt similarity index 51% rename from src/main/kotlin/net/keinekekse/util/Version.kt rename to src/commonMain/kotlin/net/keinekekse/util/Version.kt index 30695fb..665f87e 100644 --- a/src/main/kotlin/net/keinekekse/util/Version.kt +++ b/src/commonMain/kotlin/net/keinekekse/util/Version.kt @@ -3,14 +3,14 @@ package net.keinekekse.util import net.keinekekse.version.Version object VERSION: Version { - override val version = "0.2.8" - override val fullVersion = "0.2.8+build.106" + override val version = "0.3.0-beta.1+build.109" + override val fullVersion = "0.3.0-beta.1+build.109" override val major = 0 - override val minor = 2 - override val patch = 8 - override val preRelease = "" - override val buildMetadata = "build.106" - override val buildDate = "2026-01-18T01:02:24.139170Z" + override val minor = 3 + override val patch = 0 + override val preRelease = "beta.1" + override val buildMetadata = "build.109" + override val buildDate = "2026-01-18T16:08:09.445707Z" override val displayName = "Utility Library" override val copyright = "Copyright (c) 2025-2026 Hartmut Bauer" override val name = "util" diff --git a/src/main/kotlin/net/keinekekse/util/delegate.kt b/src/commonMain/kotlin/net/keinekekse/util/delegate.kt similarity index 100% rename from src/main/kotlin/net/keinekekse/util/delegate.kt rename to src/commonMain/kotlin/net/keinekekse/util/delegate.kt diff --git a/src/main/kotlin/net/keinekekse/version/Version.kt b/src/commonMain/kotlin/net/keinekekse/version/Version.kt similarity index 100% rename from src/main/kotlin/net/keinekekse/version/Version.kt rename to src/commonMain/kotlin/net/keinekekse/version/Version.kt diff --git a/src/main/kotlin/net/keinekekse/args/annotation/api.kt b/src/jvmMain/kotlin/net/keinekekse/args/annotation/api.kt similarity index 100% rename from src/main/kotlin/net/keinekekse/args/annotation/api.kt rename to src/jvmMain/kotlin/net/keinekekse/args/annotation/api.kt diff --git a/src/main/kotlin/net/keinekekse/args/annotation/impl.kt b/src/jvmMain/kotlin/net/keinekekse/args/annotation/impl.kt similarity index 100% rename from src/main/kotlin/net/keinekekse/args/annotation/impl.kt rename to src/jvmMain/kotlin/net/keinekekse/args/annotation/impl.kt diff --git a/src/jvmMain/kotlin/net/keinekekse/args/priv.jvm.kt b/src/jvmMain/kotlin/net/keinekekse/args/priv.jvm.kt new file mode 100644 index 0000000..e2687e7 --- /dev/null +++ b/src/jvmMain/kotlin/net/keinekekse/args/priv.jvm.kt @@ -0,0 +1,7 @@ +package net.keinekekse.args + +import kotlin.system.exitProcess + +actual fun exitApplication(rc: Int): Nothing { + exitProcess(rc) +} diff --git a/src/main/kotlin/net/keinekekse/args/v1/arguments.kt b/src/jvmMain/kotlin/net/keinekekse/args/v1/arguments.kt similarity index 100% rename from src/main/kotlin/net/keinekekse/args/v1/arguments.kt rename to src/jvmMain/kotlin/net/keinekekse/args/v1/arguments.kt diff --git a/src/main/kotlin/net/keinekekse/config/init.kt b/src/jvmMain/kotlin/net/keinekekse/config/init.kt similarity index 100% rename from src/main/kotlin/net/keinekekse/config/init.kt rename to src/jvmMain/kotlin/net/keinekekse/config/init.kt diff --git a/src/main/kotlin/net/keinekekse/config/system_config.kt b/src/jvmMain/kotlin/net/keinekekse/config/system_config.kt similarity index 100% rename from src/main/kotlin/net/keinekekse/config/system_config.kt rename to src/jvmMain/kotlin/net/keinekekse/config/system_config.kt diff --git a/src/main/kotlin/net/keinekekse/config/user_config.kt b/src/jvmMain/kotlin/net/keinekekse/config/user_config.kt similarity index 100% rename from src/main/kotlin/net/keinekekse/config/user_config.kt rename to src/jvmMain/kotlin/net/keinekekse/config/user_config.kt diff --git a/src/main/kotlin/net/keinekekse/exec/exec.kt b/src/jvmMain/kotlin/net/keinekekse/exec/exec.kt similarity index 100% rename from src/main/kotlin/net/keinekekse/exec/exec.kt rename to src/jvmMain/kotlin/net/keinekekse/exec/exec.kt diff --git a/src/main/kotlin/net/keinekekse/util/net.kt b/src/jvmMain/kotlin/net/keinekekse/util/net.kt similarity index 100% rename from src/main/kotlin/net/keinekekse/util/net.kt rename to src/jvmMain/kotlin/net/keinekekse/util/net.kt diff --git a/src/main/kotlin/net/keinekekse/version/manifest/version.kt b/src/jvmMain/kotlin/net/keinekekse/version/manifest/version.kt similarity index 100% rename from src/main/kotlin/net/keinekekse/version/manifest/version.kt rename to src/jvmMain/kotlin/net/keinekekse/version/manifest/version.kt diff --git a/src/linuxX64Main/kotlin/net/keinekekse/args/priv.linuxX64.kt b/src/linuxX64Main/kotlin/net/keinekekse/args/priv.linuxX64.kt new file mode 100644 index 0000000..4a5b50e --- /dev/null +++ b/src/linuxX64Main/kotlin/net/keinekekse/args/priv.linuxX64.kt @@ -0,0 +1,8 @@ +package net.keinekekse.args + +import platform.posix.exit + +actual fun exitApplication(rc: Int): Nothing { + exit(rc) + return Unit as Nothing +} diff --git a/src/macosArm64Main/kotlin/net/keinekekse/args/priv.macosArm64.kt b/src/macosArm64Main/kotlin/net/keinekekse/args/priv.macosArm64.kt new file mode 100644 index 0000000..4a5b50e --- /dev/null +++ b/src/macosArm64Main/kotlin/net/keinekekse/args/priv.macosArm64.kt @@ -0,0 +1,8 @@ +package net.keinekekse.args + +import platform.posix.exit + +actual fun exitApplication(rc: Int): Nothing { + exit(rc) + return Unit as Nothing +} diff --git a/src/wasmWasiMain/kotlin/net/keinekekse/args/priv.wasmWasi.kt b/src/wasmWasiMain/kotlin/net/keinekekse/args/priv.wasmWasi.kt new file mode 100644 index 0000000..66a21bd --- /dev/null +++ b/src/wasmWasiMain/kotlin/net/keinekekse/args/priv.wasmWasi.kt @@ -0,0 +1,5 @@ +package net.keinekekse.args + +actual fun exitApplication(rc: Int): Nothing { + TODO("Not implemented on this platform") +} diff --git a/src/webMain/kotlin/net/keinekekse/args/priv.web.kt b/src/webMain/kotlin/net/keinekekse/args/priv.web.kt new file mode 100644 index 0000000..af5033f --- /dev/null +++ b/src/webMain/kotlin/net/keinekekse/args/priv.web.kt @@ -0,0 +1,5 @@ +package net.keinekekse.args + +actual fun exitApplication(rc: Int): Nothing { + TODO("Not yet implemented") // js + wasmJs +}