Cli

:= []

Weave together a CLI parser using current Roc record-builder syntax.

map : CliBuilder(a, from_action, to_action), (a -> b) -> CliBuilder(b, from_action, to_action)

Map over the parsed value of a Weaver field.

map2 : CliBuilder(a, action1, action2), CliBuilder(b, action2, action3), (a, b -> c) -> CliBuilder(c, action1, action3)

Combine two CLI builders. This powers current Roc record-builder syntax: { name: Param.str(...), verbose: Opt.flag(...) }.Cli.

weave : CliBuilder(a, action1, action2), CliBuilder(b, action2, action3), (a, b -> c) -> CliBuilder(c, action1, action3)

Alias for map2 for code that wants a descriptive function name.

finish : CliBuilder(data, from_action, to_action), CliConfigParams -> Try(CliParser(data), CliValidationErr)

Bundle a CLI builder into a parser, ensuring its configuration is valid.

finish_without_validating : CliBuilder(data, from_action, to_action), CliConfigParams -> CliParser(data)

Bundle a CLI builder into a parser without validating its configuration.

assert_valid : Try(CliParser(data), CliValidationErr) -> CliParser(data)

Assert that a CLI is properly configured, crashing your program if not. Handle Cli.finish directly to render its validation error.

CliParser : {
    config : CliConfig,
    parser : List(Path) -> ArgParserResult(state),
    text_style : TextStyle,
}

A parser that interprets command line arguments and returns typed data.