implement type-safe fallback commands
This commit is contained in:
@@ -1,5 +0,0 @@
|
||||
package com.infendro.cli.exception.build
|
||||
|
||||
import com.infendro.cli.exception.CliException
|
||||
|
||||
abstract class BuildException : CliException()
|
||||
@@ -1,3 +1,3 @@
|
||||
package com.infendro.cli.exception
|
||||
package com.infendro.cli.exception.build
|
||||
|
||||
abstract class CliException : Exception()
|
||||
@@ -2,4 +2,4 @@ package com.infendro.cli.exception.build
|
||||
|
||||
class DuplicateCommand(
|
||||
val command: String,
|
||||
) : BuildException()
|
||||
) : CliException()
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
package com.infendro.cli.exception.build
|
||||
|
||||
class DuplicateExecute : BuildException()
|
||||
class DuplicateExecute : CliException()
|
||||
|
||||
@@ -2,4 +2,4 @@ package com.infendro.cli.exception.build
|
||||
|
||||
class DuplicateOption(
|
||||
val name: String,
|
||||
) : BuildException()
|
||||
) : CliException()
|
||||
|
||||
@@ -2,4 +2,4 @@ package com.infendro.cli.exception.build
|
||||
|
||||
class InvalidArgument(
|
||||
val name: String,
|
||||
) : BuildException()
|
||||
) : CliException()
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
package com.infendro.cli.exception.build
|
||||
|
||||
class InvalidArgumentOrder : BuildException()
|
||||
class InvalidArgumentOrder : CliException()
|
||||
|
||||
@@ -2,4 +2,4 @@ package com.infendro.cli.exception.build
|
||||
|
||||
class InvalidCommand(
|
||||
val name: String,
|
||||
) : BuildException()
|
||||
) : CliException()
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
package com.infendro.cli.exception.build
|
||||
|
||||
class InvalidCommandOrder : BuildException()
|
||||
class InvalidCommandOrder : CliException()
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
package com.infendro.cli.exception.build
|
||||
|
||||
class InvalidFallback : BuildException()
|
||||
class InvalidFallback : CliException()
|
||||
|
||||
@@ -2,4 +2,4 @@ package com.infendro.cli.exception.build
|
||||
|
||||
class InvalidOption(
|
||||
val name: String,
|
||||
) : BuildException()
|
||||
) : CliException()
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
package com.infendro.cli.exception.build
|
||||
|
||||
class InvalidRange : BuildException()
|
||||
class InvalidRange : CliException()
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
package com.infendro.cli.exception.build
|
||||
|
||||
class MissingOptionName : BuildException()
|
||||
class MissingOptionName : CliException()
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
package com.infendro.cli.exception.run
|
||||
|
||||
import com.infendro.cli.command.Argument
|
||||
import com.infendro.cli.command.argument.Argument
|
||||
|
||||
class InvalidArgumentCount(
|
||||
val argument: Argument<*>,
|
||||
val count: Int,
|
||||
) : RunException() {
|
||||
) : RuntimeError() {
|
||||
override val message: String
|
||||
get() {
|
||||
val expected = when {
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
package com.infendro.cli.exception.run
|
||||
|
||||
import com.infendro.cli.command.Option
|
||||
import com.infendro.cli.command.option.Option
|
||||
|
||||
class InvalidOptionCount(
|
||||
val option: Option<*>,
|
||||
val count: Int,
|
||||
) : RunException() {
|
||||
) : RuntimeError() {
|
||||
override val message: String
|
||||
get() {
|
||||
val expected = when {
|
||||
|
||||
@@ -5,7 +5,7 @@ import kotlin.reflect.KClass
|
||||
class InvalidValue(
|
||||
val value: String,
|
||||
val type: KClass<*>,
|
||||
) : RunException() {
|
||||
) : RuntimeError() {
|
||||
override val message: String
|
||||
get() = """"$value" cannot be converted to ${type.simpleName ?: "Unknown"}"""
|
||||
}
|
||||
|
||||
@@ -2,7 +2,7 @@ package com.infendro.cli.exception.run
|
||||
|
||||
class MalformedOption(
|
||||
val option: String,
|
||||
) : RunException() {
|
||||
) : RuntimeError() {
|
||||
override val message: String
|
||||
get() = """malformed option "$option""""
|
||||
}
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
package com.infendro.cli.exception.run
|
||||
|
||||
import com.infendro.cli.command.Option
|
||||
import com.infendro.cli.command.option.Option
|
||||
|
||||
class MissingOptionValue(
|
||||
val option: Option<*>,
|
||||
) : RunException() {
|
||||
) : RuntimeError() {
|
||||
override val message: String
|
||||
get() = """no value provided for option "${option.name}""""
|
||||
}
|
||||
|
||||
@@ -1,5 +0,0 @@
|
||||
package com.infendro.cli.exception.run
|
||||
|
||||
import com.infendro.cli.exception.CliException
|
||||
|
||||
abstract class RunException : CliException()
|
||||
@@ -0,0 +1,5 @@
|
||||
package com.infendro.cli.exception.run
|
||||
|
||||
abstract class RuntimeError {
|
||||
abstract val message: String
|
||||
}
|
||||
@@ -1,6 +1,6 @@
|
||||
package com.infendro.cli.exception.run
|
||||
|
||||
class UnexpectedArgument : RunException() {
|
||||
class UnexpectedArgument : RuntimeError() {
|
||||
override val message: String
|
||||
get() = """unexpected argument"""
|
||||
}
|
||||
|
||||
@@ -2,7 +2,7 @@ package com.infendro.cli.exception.run
|
||||
|
||||
class UnknownCommand(
|
||||
val command: String,
|
||||
) : RunException() {
|
||||
) : RuntimeError() {
|
||||
override val message: String
|
||||
get() = """unknown command "$command""""
|
||||
}
|
||||
|
||||
@@ -2,7 +2,7 @@ package com.infendro.cli.exception.run
|
||||
|
||||
class UnknownOption(
|
||||
val option: String,
|
||||
) : RunException() {
|
||||
) : RuntimeError() {
|
||||
override val message: String
|
||||
get() = """unknown option "$option""""
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user