diff --git a/cli/build.gradle.kts b/cli/build.gradle.kts new file mode 100644 index 00000000..98b4533e --- /dev/null +++ b/cli/build.gradle.kts @@ -0,0 +1,24 @@ +plugins { + `maven-publish` + kotlin("jvm") +} + +dependencies { + api("com.github.ajalt.clikt:clikt:${Versions.clikt}") +} + +publishing { + publications.create("maven") { + from(components["java"]) + + pom { + packaging = "jar" + name.set("OpenRS2 CLI") + description.set( + """ + Clikt extensions. + """.trimIndent() + ) + } + } +} diff --git a/cli/src/main/kotlin/org/openrs2/cli/OptionExtensions.kt b/cli/src/main/kotlin/org/openrs2/cli/OptionExtensions.kt new file mode 100644 index 00000000..8c210a29 --- /dev/null +++ b/cli/src/main/kotlin/org/openrs2/cli/OptionExtensions.kt @@ -0,0 +1,17 @@ +package org.openrs2.cli + +import com.github.ajalt.clikt.core.BadParameterValue +import com.github.ajalt.clikt.parameters.options.NullableOption +import com.github.ajalt.clikt.parameters.options.RawOption +import com.github.ajalt.clikt.parameters.options.convert +import java.time.Instant +import java.time.OffsetDateTime +import java.time.format.DateTimeParseException + +public fun RawOption.instant(): NullableOption = convert({ "TIMESTAMP" }) { + try { + OffsetDateTime.parse(it).toInstant() + } catch (ex: DateTimeParseException) { + throw BadParameterValue("$it is not a valid timestamp") + } +} diff --git a/settings.gradle.kts b/settings.gradle.kts index 02a96951..0c23e48b 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -6,6 +6,7 @@ include( "asm", "buffer", "cache", + "cli", "compress", "compress-cli", "conf",