CLI Applications

Alternatives: std/parseopt, argparse, docopt, therapist, confutils (Status).

Terminal: std/terminal (colors, styles, cursor, getch), std/colors, illwill (TUI), nimwave, nancy (tables), suru (progress bars), termstyle.

Configuration: std/parsecfg (INI), parsetoml, YAML (NimYAML), JSON, env vars.

Logging: std/logging (ConsoleLogger, FileLogger, RollingFileLogger), chronicles (structured logging, compile-time filtering).

Distribution: single static binaries, nimble install, GitHub Releases via CI cross-builds.

# cligen: generate a full CLI from a proc signature
import cligen
proc greet(name: string, times = 1, loud = false): int =
  ## Greet someone.
  for _ in 1..times:
    echo (if loud: name.toUpperAscii else: name)
  0
dispatch greet, help = {"name": "who to greet", "times": "repetitions"}
# ./greet --name=Ana -t=3 --loud