3 ms·
If you haven't seen it, I consider the best-in-class argument parsing library to be Optparse-Applicative. https://github.com/pcapriotti/optparse-applicative htt
by wyager 7y ago
If you haven't seen it, I consider the best-in-class argument parsing library to be Optparse-Applicative. https://github.com/pcapriotti/optparse-applicative https://github.com/pcapriotti/optparse-applicative
It provides an applicative interface, which it turns out is very precisely impedance-matched to the nature of command line arguments.
It also integrates nicely with e.g. https://hackage.haskell.org/package/optparse-generic https://hackage.haskell.org/package/optparse-generic to automatically derive command line parsers from data structures.
An example from a recent process of mine: https://github.com/wyager/zfs-backup/blob/master/src/Lib.hs https://github.com/wyager/zfs-backup/blob/master/src/Lib.hs . You can see what the generated help text looks like in the README.
The argument parser is automatically derived from the data structure describing the commands available in my program, using optparse-generic. Some extra type annotations on the command data structure provide the detailed document text.
Of course, you don't have to use the fancy auto-generation stuff if you don't want to. Writing optparse-applicative parsers by hand is very pleasant as well. Here is the argument parser code for my website's server: http://paste.best/p/22_rCSCen8M= http://paste.best/p/22_rCSCen8M=