D port of docopt

Sönke Ludwig via Digitalmars-d-announce digitalmars-d-announce at puremagic.com
Mon Jun 16 10:59:15 PDT 2014


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).
>
> https://github.com/rwtolbert/docopt.d
>
> 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.
>
> Regards,
> Bob

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 [1] (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.

[1]: http://code.dlang.org/


More information about the Digitalmars-d-announce mailing list