Skip to content

nim: CLI opts parsing #135

@konsumer

Description

@konsumer

You mention in README

Unless I'm missing something, command line parsing is really bad.

You should check out docopt! It's not the only way to do it in nim, but it's pretty nice. It parses your help-text and makes it pretty easy.

Here is an example from a recent project:

import docopt

const doc = """
null0 - Runtime for null0 game-engine

Usage:
  null0 <cart>
  null0 --help
  null0 --net <cart>

<cart>       Specify the cart-name (wasm file or zip/directory with main.wasm in it)

Options:
  -h --help  Show this screen.
  -n,--net   Allow cart to access networking
"""
proc main() =
  let args = docopt(doc, version = "0.0.1")
  if args["--net"]:
    # do net stuff
  cartLoad($args["<cart>"])

It adds all the options and understands -n,--net are aliases, and other little things. It knows it should demand a <cart> and shows a simplified help, if you don't provide it. It seems pretty tolerant of different formats (like I added documentation for <cart> in a few places, and it kept working, fine.)

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or requestnimNim-specific

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions