hwylterm/hwylcli

Search:
Group by:
Source   Edit  

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  
Count = object
  val*: int
Count type for an incrementing flag 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  
KV[X; Y] = object
  key*: X
  val*: Y
basic key value type Source   Edit  
KVString = KV[string, 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 `$`(t: typedesc[KVString]): string
Source   Edit  
proc `$`[X, Y](t: typedesc[KV[X, Y]]): string
Source   Edit  
func `+`[T](a: HashSet[T]; b: set[T]): HashSet[T]
Source   Edit  
func `-`[T](a: HashSet[T]; b: set[T]): HashSet[T]
Source   Edit  
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  
proc parse(p: OptParser; target: var bool) {....raises: [], tags: [], forbids: [].}
Source   Edit  
proc parse(p: OptParser; target: var Count) {....raises: [], tags: [], forbids: [].}
Source   Edit  
proc parse(p: OptParser; target: var float) {....raises: [], tags: [], forbids: [].}
Source   Edit  
proc parse(p: OptParser; target: var int) {....raises: [], tags: [], forbids: [].}
Source   Edit  
proc parse(p: OptParser; target: var string) {....raises: [], tags: [], forbids: [].}
Source   Edit  
proc parse[E: enum](p: OptParser; target: var E)
Source   Edit  
proc parse[T](p: var OptParser; target: var KV[string, T])
Source   Edit  
proc parse[T](p: var OptParser; target: var seq[T])
Source   Edit  
proc parseArgs(arg: string; target: var float) {....raises: [], tags: [],
    forbids: [].}
Source   Edit  
proc parseArgs(arg: string; target: var int) {....raises: [], tags: [], forbids: [].}
Source   Edit  
func parseArgs(arg: string; target: var string) {....raises: [], tags: [],
    forbids: [].}
Source   Edit  
proc parseArgs[E: enum](arg: string; target: var E)
Source   Edit  
proc parseArgs[T](arg: string; target: var seq[T])
Source   Edit  
proc parseArgs[T](args: seq[string]; target: var seq[T])
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  

Iterators

iterator items[X, Y](kvs: seq[KV[X, Y]]): (X, Y)
Source   Edit  

Macros

macro hwylCli(body: untyped)
generate a CLI styled by hwylterm and parsed by parseopt3 Source   Edit  

Templates

template render(cli: HwylCliHelp): string
Source   Edit