implement EnumParser

This commit is contained in:
2025-12-31 18:51:16 +01:00
parent 74a9324660
commit 06a2d1bdce
3 changed files with 43 additions and 6 deletions

View File

@@ -1,10 +1,8 @@
package com.infendro.cli.command
import com.infendro.cli.exception.build.NoOptionNameException
import com.infendro.cli.parser.BooleanParser
import com.infendro.cli.parser.IntParser
import com.infendro.cli.parser.*
import com.infendro.cli.parser.Parser
import com.infendro.cli.parser.StringParser
sealed class Option<T>(
val names: List<String>,
@@ -89,5 +87,17 @@ sealed class Option<T>(
fun booleans(vararg names: String) =
Variable(names.asList(), BooleanParser)
inline fun <reified T : Enum<T>> enum(vararg names: String) =
Required(names.asList(), enumParser<T>())
inline fun <reified T : Enum<T>> enumOrElse(vararg names: String, other: T) =
OrElse(names.asList(), other, enumParser<T>())
inline fun <reified T : Enum<T>> enumOrNull(vararg names: String) =
OrNull(names.asList(), enumParser<T>())
inline fun <reified T : Enum<T>> enums(vararg names: String) =
Variable(names.asList(), enumParser<T>())
}
}