Validate

:= []
validate_cli : CliConfig -> Try({  }, CliValidationErr)

Ensure that a CLI's configuration is valid.

validate_command : {
    name : Str,
    options : List(OptionConfig),
    parent_options : List(OptionAtSubcommand),
    parameters : List(ParameterConfig),
    subcommands : SubcommandsConfig,
    subcommand_path : List(Str),
} -> Try({  }, CliValidationErr)
CliValidationErr : [
    OverlappingParameterNames({ first : Str, second : Str, subcommand_path : List(Str) }),
    OverlappingOptionNames({ left : OptionAtSubcommand, right : OptionAtSubcommand }),
    DuplicateSubcommandName(NameAtSubcommand),
    RequiredSubcommandsCannotBeEmpty(List(Str)),
    InvalidShortFlagName(NameAtSubcommand),
    InvalidLongFlagName(NameAtSubcommand),
    InvalidCommandName(NameAtSubcommand),
    InvalidParameterName(NameAtSubcommand),
    OptionMustHaveShortOrLongName({ subcommand_path : List(Str) }),
    InvalidOptionValueType(OptionAtSubcommand),
    InvalidParameterValueType(ParamAtSubcommand),
    OverrodeSpecialHelpFlag(OptionAtSubcommand),
    OverrodeSpecialVersionFlag(OptionAtSubcommand),
]

The types of errors that might be found in a misconfigured CLI.