Command line interface tools are the new web framework. In addition to the Python standard library's getopt, optparse and argparse there is a bewildering array of packages available on the Python Packaging Index. Packages like Click, Cliff, Docopt, Invoke all provide different mechanics for creating command line applications. When all you want to do is expose a command line and get back to creating functionality, it’s hard to know which alternative to reach for.
This presentation will have two parts, the first half will be a brief survey of popular modules. Strengths, weaknesses and design philosophies will be compared by creating command line processing for the same example program.
The second half will go into more depth on a specific package, Begins. This package was authored by the presenter to minimise the disruption developers experience when breaking flow to implement command line processing. The audience will be shown how a single line of code can create a complex command line interface. It will also be shown how a handful of decorators from the Begins API can eliminate boilerplate code and create powerful, complex applications.