HwylCli
example program:
import std/[strutils] import hywlterm/hwylcli hwylCli: name "example" flags: count: ? "# of times" - n input: ? "content" - i run: echo (input & " ").repeat(count)
$ example -n 2 --input "testing" > testing testing
For more example programs see the tests directory.
Types
BuiltinStyleKind = enum AllSettings, ## Use all help settings (besides NoEnv) Minimal, ## Use no extra help settings WithoutColor, ## Default help settings without color WithoutAnsi ## Default help settings without color or styling
- Source Edit
CliFlagSetting = enum HideDefault, ## Don't show default values NoShort, ## Counter option to Parent's InferShort NoEnv, ## Counter option to Parent's InferEnv Required ## Flag must be used (or have default value)
- Source Edit
CliSetting = enum Propagate, ## Include parent command settings in subcommand GenerateOnly, ## Don't attach root `runProc()` node NoHelpFlag, ## Remove the builtin help flag ShowHelp, ## If cmdline empty show help LongHelp, ## Show more info with --help than -h NoNormalize, ## Don't normalize flags and commands HideDefault, ## Don't show default values InferShort, ## Autodefine short flags InferEnv ## Autodefine env vars for flags
- Source Edit
HwylCliHelp = object header*, footer*, description*, usage*: string subcmds*: seq[HwylSubCmdHelp] flags*: seq[HwylFlagHelp] styles*: HwylCliStyles lengths*: HwylCliLengths longHelp*: bool
- Source Edit
HwylCliStyles = object name* = "bold" header* = "bold cyan" flagShort* = "yellow" flagLong* = "magenta" flagDesc* = "" default* = "faint" required* = "red" subcmd* = "bold" args* = "bold italic" minCmdLen* = 8 settings*: HashSet[HwylCliStyleSetting] = (data: [(0, Aliases), (-8667131158406858863, Types), (0, Aliases), (0, Aliases), (6130242188011939732, Defaults), (0, Aliases), (0, Aliases), (0, Aliases), (0, Aliases), (-5940405725068231575, Aliases), (0, Aliases), (0, Aliases), (0, Aliases), (8641844181895329213, Required), (0, Aliases), (0, Aliases)], counter: 4)
- Source Edit
HwylCliStyleSetting = enum Aliases, ## show aliases, example "show (s)" Required, ## indicate if flag is required Defaults, ## show default value Types, ## show expected type for flag FlagGroups, ## group flags together NoEnv ## ignore env settings for style
- Source Edit
HwylFlagHelp = tuple[short, long, description, typeRepr, defaultVal, group: string, required: bool]
- Source Edit
HwylSubCmdHelp = tuple[name, aliases, desc: string]
- Source Edit
Consts
defaultStyleSettings = (data: [(0, Aliases), (-8667131158406858863, Types), (0, Aliases), (0, Aliases), (6130242188011939732, Defaults), (0, Aliases), (0, Aliases), (0, Aliases), (0, Aliases), (-5940405725068231575, Aliases), (0, Aliases), (0, Aliases), (0, Aliases), (8641844181895329213, Required), (0, Aliases), (0, Aliases)], counter: 4)
- Source Edit
Procs
proc bb(cli: HwylCliHelp): BbString {....raises: [KeyError], tags: [], forbids: [].}
- Source Edit
func fromBuiltinHelpStyles(kind: BuiltinStyleKind): HwylCliStyles {. ...raises: [ValueError], tags: [ReadEnvEffect], forbids: [].}
- Source Edit
proc hwylCliError(msg: BbString) {....raises: [], tags: [], forbids: [].}
- Source Edit
proc hwylCliError(msg: string) {....raises: [], tags: [], forbids: [].}
- Source Edit
func hwylDefaultUsage(name: string; hasSubcommands: bool; args: seq[tuple[name: string, isSeq: bool]]; styles: HwylCliStyles): string {....raises: [], tags: [], forbids: [].}
- generate a default BbMarkup usage string Source Edit
func newHwylCliHelp(usage = ""; header = ""; footer = ""; description = ""; subcmds: openArray[HwylSubCmdHelp] = @[]; flags: openArray[HwylFlagHelp] = @[]; styles = HwylCliStyles(); longHelp = false): HwylCliHelp {. ...raises: [], tags: [], forbids: [].}
- Source Edit
func newHwylCliStyles(name = "bold"; header = "bold cyan"; flagShort = "yellow"; flagLong = "magenta"; flagDesc = ""; default = "faint"; required = "red"; subcmd = "bold"; args = "bold italic"; typeRepr = "faint"; minCmdLen = 8; settings: HashSet[ HwylCliStyleSetting] = defaultStyleSettings): HwylCliStyles {. ...raises: [ValueError], tags: [ReadEnvEffect], forbids: [].}
- Source Edit
func render(cli: HwylCliHelp; f: HwylFlagHelp): string {....raises: [], tags: [], forbids: [].}
- Source Edit
proc render(cli: HwylCliHelp; flags: seq[HwylFlagHelp]): string {. ...raises: [KeyError], tags: [], forbids: [].}
- Source Edit
func render(cli: HwylCliHelp; subcmd: HwylSubCmdHelp): string {....raises: [], tags: [], forbids: [].}
- Source Edit
func withHelpSettings(settings: set[HwylCliStyleSetting] | HashSet[HwylCliStyleSetting]): HwylCliStyles
- Source Edit
Templates
template render(cli: HwylCliHelp): string
- Source Edit
Exports
-
getopt, next, OptParser, getopt, initOptParser, initOptParser, optionNormalize, GetoptResult, lengthen, CmdLineKind, valsWithPfx, BbString, hecho, align, setHwylConsole, bb, newConsole, &, toAnsiCode, bbfmt, BbMode, bb, &, len, add, alignLeft, $, echo, bbEscape, bbMarkup, add, BbSpan, toString, stripAnsi, toAnsiCode, setHwylConsoleFile, &, toAnsiCode, bb, hwylConsole, bb, truncate