1.4.0 release #9

Merged
Infendro merged 20 commits from develop into main 2026-01-10 07:37:21 +00:00
12 changed files with 17 additions and 17 deletions
Showing only changes of commit fa5fa89bec - Show all commits

View File

@@ -31,7 +31,7 @@ sealed class Command private constructor(
command.renderer.render(result.path)?.let { print(it) } command.renderer.render(result.path)?.let { print(it) }
} }
is ContextParser.Result.Failure -> { is ContextParser.Result.Failure -> {
println("error: ${result.error.message}") println("error: ${result.failure.message}")
val command = result.path.last() val command = result.path.last()
command.renderer.render(result.path)?.let { command.renderer.render(result.path)?.let {
println() println()

View File

@@ -19,13 +19,13 @@ internal class ContextParser(
data class Failure( data class Failure(
val path: List<Command>, val path: List<Command>,
val error: RunError, val failure: RuntimeFailure,
) : Result() ) : Result()
} }
private fun success(context: Context) = Result.Success(context) private fun success(context: Context) = Result.Success(context)
private fun help(path: List<Command>) = Result.Help(path) private fun help(path: List<Command>) = Result.Help(path)
private fun failure(path: List<Command>, exception: RunError) = Result.Failure(path, exception) private fun failure(path: List<Command>, exception: RuntimeFailure) = Result.Failure(path, exception)
private var index = 0 private var index = 0
private val current: String private val current: String
@@ -63,7 +63,7 @@ internal class ContextParser(
if (cmd is Command.Fallback<*>) { if (cmd is Command.Fallback<*>) {
val value = when (val result = cmd.parser.parse(current)) { val value = when (val result = cmd.parser.parse(current)) {
is Parser.Result.Success<*> -> result.value is Parser.Result.Success<*> -> result.value
is Parser.Result.Failure<*> -> return failure(path, result.error) is Parser.Result.Failure<*> -> return failure(path, result.failure)
} }
commands[cmd.key] = value commands[cmd.key] = value
} }
@@ -91,7 +91,7 @@ internal class ContextParser(
val value = when (val result = argument.parser.parse(trimmed)) { val value = when (val result = argument.parser.parse(trimmed)) {
is Parser.Result.Success<*> -> result.value is Parser.Result.Success<*> -> result.value
is Parser.Result.Failure<*> -> return failure(path, result.error) is Parser.Result.Failure<*> -> return failure(path, result.failure)
} }
arguments[argument]!! += value arguments[argument]!! += value
argumentCount++ argumentCount++
@@ -141,7 +141,7 @@ internal class ContextParser(
text != null -> text != null ->
when (val result = option.parser.parse(current)) { when (val result = option.parser.parse(current)) {
is Parser.Result.Success<*> -> result.value is Parser.Result.Success<*> -> result.value
is Parser.Result.Failure<*> -> return failure(path, result.error) is Parser.Result.Failure<*> -> return failure(path, result.failure)
} }
option.flag -> option.fallback!! option.flag -> option.fallback!!
else -> return failure(path, MissingOptionValue(option)) else -> return failure(path, MissingOptionValue(option))

View File

@@ -5,7 +5,7 @@ import com.infendro.cli.command.argument.Argument
class InvalidArgumentCount( class InvalidArgumentCount(
val argument: Argument<*>, val argument: Argument<*>,
val count: Int, val count: Int,
) : RunError() { ) : RuntimeFailure() {
override val message: String override val message: String
get() { get() {
val expected = when { val expected = when {

View File

@@ -5,7 +5,7 @@ import com.infendro.cli.command.option.Option
class InvalidOptionCount( class InvalidOptionCount(
val option: Option<*>, val option: Option<*>,
val count: Int, val count: Int,
) : RunError() { ) : RuntimeFailure() {
override val message: String override val message: String
get() { get() {
val expected = when { val expected = when {

View File

@@ -5,7 +5,7 @@ import kotlin.reflect.KClass
class InvalidValue( class InvalidValue(
val value: String, val value: String,
val type: KClass<*>, val type: KClass<*>,
) : RunError() { ) : RuntimeFailure() {
override val message: String override val message: String
get() = """"$value" cannot be converted to ${type.simpleName ?: "Unknown"}""" get() = """"$value" cannot be converted to ${type.simpleName ?: "Unknown"}"""
} }

View File

@@ -2,7 +2,7 @@ package com.infendro.cli.error.run
class MalformedOption( class MalformedOption(
val option: String, val option: String,
) : RunError() { ) : RuntimeFailure() {
override val message: String override val message: String
get() = """malformed option "$option"""" get() = """malformed option "$option""""
} }

View File

@@ -4,7 +4,7 @@ import com.infendro.cli.command.option.Option
class MissingOptionValue( class MissingOptionValue(
val option: Option<*>, val option: Option<*>,
) : RunError() { ) : RuntimeFailure() {
override val message: String override val message: String
get() = """no value provided for option "${option.name}"""" get() = """no value provided for option "${option.name}""""
} }

View File

@@ -1,5 +1,5 @@
package com.infendro.cli.error.run package com.infendro.cli.error.run
abstract class RunError { abstract class RuntimeFailure {
abstract val message: String abstract val message: String
} }

View File

@@ -1,6 +1,6 @@
package com.infendro.cli.error.run package com.infendro.cli.error.run
class UnexpectedArgument : RunError() { class UnexpectedArgument : RuntimeFailure() {
override val message: String override val message: String
get() = """unexpected argument""" get() = """unexpected argument"""
} }

View File

@@ -2,7 +2,7 @@ package com.infendro.cli.error.run
class UnknownCommand( class UnknownCommand(
val command: String, val command: String,
) : RunError() { ) : RuntimeFailure() {
override val message: String override val message: String
get() = """unknown command "$command"""" get() = """unknown command "$command""""
} }

View File

@@ -2,7 +2,7 @@ package com.infendro.cli.error.run
class UnknownOption( class UnknownOption(
val option: String, val option: String,
) : RunError() { ) : RuntimeFailure() {
override val message: String override val message: String
get() = """unknown option "$option"""" get() = """unknown option "$option""""
} }

View File

@@ -1,7 +1,7 @@
package com.infendro.cli.parser package com.infendro.cli.parser
import com.infendro.cli.error.run.InvalidValue import com.infendro.cli.error.run.InvalidValue
import com.infendro.cli.error.run.RunError import com.infendro.cli.error.run.RuntimeFailure
import kotlin.reflect.KClass import kotlin.reflect.KClass
abstract class Parser<T : Any>( abstract class Parser<T : Any>(
@@ -13,7 +13,7 @@ abstract class Parser<T : Any>(
) : Result<T>() ) : Result<T>()
data class Failure<T : Any>( data class Failure<T : Any>(
val error: RunError, val failure: RuntimeFailure,
) : Result<T>() ) : Result<T>()
} }