Am 15.06.2014 19:35, schrieb Bob Tolbert:
In order to learn D, I've worked up a port of the docopt
commandline parser (original in Python http://docopt.org).
Since this is my first code in D, I apologize in advance for the
mix if Python and C++ idioms. Since this is ported from Python,
with the intention of staying compatible with future Python
versions, some of that is expected, but I look for this as an
chance to learn more about D.
It is also a pretty useful way to write commandline interfaces.
The included example that mimics the git CLI is pretty impressive.
This is also my first submission as a dub project, so hopefully I
got that right as well.
Still needs more tests ported from Python, but it does pass the
entire functional test suite for the current Python version.
That's a really nice approach. Makes me wonder if there is a generic
bash completion script for this kind of help screen format(?).
One thing that would be nice is support for multiple help screens (e.g.
one per command). For DUB  (or GIT) for example there is one main
help screen that lists all commands along with common options and then
one help screen per command that lists the individual arguments, options
and a summary of what the command does. But maybe for such more complex
CLIs it starts to be more efficient to use a programmatic approach.
For a statically typed language like D it would also be interesting to
investigate the possibility to encode and validate the type of each
option or positional argument instead of using a generic string type.