diff --git a/src/commonMain/kotlin/com/infendro/cli/command/Command.kt b/src/commonMain/kotlin/com/infendro/cli/command/Command.kt index d10601f..5cfb1df 100644 --- a/src/commonMain/kotlin/com/infendro/cli/command/Command.kt +++ b/src/commonMain/kotlin/com/infendro/cli/command/Command.kt @@ -20,7 +20,7 @@ sealed class Command private constructor( internal val renderer: HelpRenderer, ) { init { - if (!name.matches(Regex.COMMAND)) throw InvalidCommand(name) + if (!name.matches(Regex.COMMAND)) throw InvalidCommandName(name) } fun run(args: Array) { diff --git a/src/commonMain/kotlin/com/infendro/cli/command/argument/Argument.kt b/src/commonMain/kotlin/com/infendro/cli/command/argument/Argument.kt index 3a63920..696b794 100644 --- a/src/commonMain/kotlin/com/infendro/cli/command/argument/Argument.kt +++ b/src/commonMain/kotlin/com/infendro/cli/command/argument/Argument.kt @@ -1,6 +1,6 @@ package com.infendro.cli.command.argument -import com.infendro.cli.error.build.InvalidArgument +import com.infendro.cli.error.build.InvalidArgumentName import com.infendro.cli.error.build.InvalidRange import com.infendro.cli.parser.Parser import com.infendro.cli.util.Regex.ARGUMENT @@ -13,7 +13,7 @@ sealed class Argument( ) { init { when { - !name.matches(ARGUMENT) -> throw InvalidArgument(name) + !name.matches(ARGUMENT) -> throw InvalidArgumentName(name) min !in 0..count || max == 0 -> throw InvalidRange() } } diff --git a/src/commonMain/kotlin/com/infendro/cli/command/option/Option.kt b/src/commonMain/kotlin/com/infendro/cli/command/option/Option.kt index 5191848..7073274 100644 --- a/src/commonMain/kotlin/com/infendro/cli/command/option/Option.kt +++ b/src/commonMain/kotlin/com/infendro/cli/command/option/Option.kt @@ -1,6 +1,6 @@ package com.infendro.cli.command.option -import com.infendro.cli.error.build.InvalidOption +import com.infendro.cli.error.build.InvalidOptionName import com.infendro.cli.error.build.InvalidRange import com.infendro.cli.error.build.MissingOptionName import com.infendro.cli.parser.Parser @@ -35,7 +35,7 @@ sealed class Option( init { when { names.isEmpty() -> throw MissingOptionName() - names.any { !it.matches(OPTION) } -> throw InvalidOption(name) + names.any { !it.matches(OPTION) } -> throw InvalidOptionName(name) min !in 0..count || max == 0 -> throw InvalidRange() } } diff --git a/src/commonMain/kotlin/com/infendro/cli/error/build/BuildException.kt b/src/commonMain/kotlin/com/infendro/cli/error/build/BuildException.kt index ecefba9..0c1af10 100644 --- a/src/commonMain/kotlin/com/infendro/cli/error/build/BuildException.kt +++ b/src/commonMain/kotlin/com/infendro/cli/error/build/BuildException.kt @@ -1,3 +1,3 @@ package com.infendro.cli.error.build -abstract class BuildException : Error() +abstract class BuildException : Exception() diff --git a/src/commonMain/kotlin/com/infendro/cli/error/build/DuplicateArgument.kt b/src/commonMain/kotlin/com/infendro/cli/error/build/DuplicateArgument.kt index fe21142..5f3bbab 100644 --- a/src/commonMain/kotlin/com/infendro/cli/error/build/DuplicateArgument.kt +++ b/src/commonMain/kotlin/com/infendro/cli/error/build/DuplicateArgument.kt @@ -1,8 +1,10 @@ package com.infendro.cli.error.build +import com.infendro.cli.command.argument.Argument + class DuplicateArgument( - val name: String, + val argument: Argument<*>, ) : BuildException() { override val message: String - get() = """duplicate argument "$name"""" + get() = """duplicate argument "${argument.name}"""" } diff --git a/src/commonMain/kotlin/com/infendro/cli/error/build/DuplicateCommand.kt b/src/commonMain/kotlin/com/infendro/cli/error/build/DuplicateCommand.kt index 354ce41..4919bb0 100644 --- a/src/commonMain/kotlin/com/infendro/cli/error/build/DuplicateCommand.kt +++ b/src/commonMain/kotlin/com/infendro/cli/error/build/DuplicateCommand.kt @@ -1,8 +1,10 @@ package com.infendro.cli.error.build +import com.infendro.cli.command.Command + class DuplicateCommand( - val command: String, + val command: Command, ) : BuildException() { override val message: String - get() = """duplicate command "$command"""" + get() = """duplicate command "${command.name}"""" } diff --git a/src/commonMain/kotlin/com/infendro/cli/error/build/DuplicateOption.kt b/src/commonMain/kotlin/com/infendro/cli/error/build/DuplicateOption.kt index adf89a2..52f3c3b 100644 --- a/src/commonMain/kotlin/com/infendro/cli/error/build/DuplicateOption.kt +++ b/src/commonMain/kotlin/com/infendro/cli/error/build/DuplicateOption.kt @@ -1,8 +1,10 @@ package com.infendro.cli.error.build +import com.infendro.cli.command.option.Option + class DuplicateOption( - val name: String, + val option: Option<*>, ) : BuildException() { override val message: String - get() = """duplicate option "$name"""" + get() = """duplicate option "${option.name}"""" } diff --git a/src/commonMain/kotlin/com/infendro/cli/error/build/InvalidArgument.kt b/src/commonMain/kotlin/com/infendro/cli/error/build/InvalidArgumentName.kt similarity index 86% rename from src/commonMain/kotlin/com/infendro/cli/error/build/InvalidArgument.kt rename to src/commonMain/kotlin/com/infendro/cli/error/build/InvalidArgumentName.kt index 6d7ae74..8a9a3d5 100644 --- a/src/commonMain/kotlin/com/infendro/cli/error/build/InvalidArgument.kt +++ b/src/commonMain/kotlin/com/infendro/cli/error/build/InvalidArgumentName.kt @@ -1,6 +1,6 @@ package com.infendro.cli.error.build -class InvalidArgument( +class InvalidArgumentName( val name: String, ) : BuildException() { override val message: String diff --git a/src/commonMain/kotlin/com/infendro/cli/error/build/InvalidCommand.kt b/src/commonMain/kotlin/com/infendro/cli/error/build/InvalidCommandName.kt similarity index 86% rename from src/commonMain/kotlin/com/infendro/cli/error/build/InvalidCommand.kt rename to src/commonMain/kotlin/com/infendro/cli/error/build/InvalidCommandName.kt index a6d3a3a..e1fd029 100644 --- a/src/commonMain/kotlin/com/infendro/cli/error/build/InvalidCommand.kt +++ b/src/commonMain/kotlin/com/infendro/cli/error/build/InvalidCommandName.kt @@ -1,6 +1,6 @@ package com.infendro.cli.error.build -class InvalidCommand( +class InvalidCommandName( val name: String, ) : BuildException() { override val message: String diff --git a/src/commonMain/kotlin/com/infendro/cli/error/build/InvalidOption.kt b/src/commonMain/kotlin/com/infendro/cli/error/build/InvalidOptionName.kt similarity index 87% rename from src/commonMain/kotlin/com/infendro/cli/error/build/InvalidOption.kt rename to src/commonMain/kotlin/com/infendro/cli/error/build/InvalidOptionName.kt index 896d5df..1eeaa0d 100644 --- a/src/commonMain/kotlin/com/infendro/cli/error/build/InvalidOption.kt +++ b/src/commonMain/kotlin/com/infendro/cli/error/build/InvalidOptionName.kt @@ -1,6 +1,6 @@ package com.infendro.cli.error.build -class InvalidOption( +class InvalidOptionName( val name: String, ) : BuildException() { override val message: String