
Argument Parser for Swift - AJRF
https://swift.org/blog/argument-parser/
======
frou_dh
Specifying the interface of a CLI command is a good example of a natural place
for declarative programming. You just want to write WHAT the interface is, not
HOW to do the parsing.

When I made a homegrown Lisp implementation, eventually being able to put a
single macro "(usage ...)" in the standard library that, when utilised in a
script, would invisibly generate the parsing and variable binding machinery,
was one of the more rewarding parts.

------
makecheck
This has a pretty minimal amount of code compared to many alternatives I’ve
seen.

One minor nitpick; the default help output is a bit unlike most tools. For
example, I’ve never seen a tool that says “OVERVIEW:”, they simply lead with a
summary line; and, all-caps “USAGE:” doesn’t read as nicely to me as “Usage:”
that almost any other command-line tool would print. (For some reason caps are
common in man pages but not screen dumps.)

