Great work Milindu. It would be better to add the licenses for each library too, in case any non-compatible or ambiguous ones might be there.
IMO using a framework from the standard library would be better, since the pre-requisites will be minimal. On Feb 25, 2015 9:55 AM, "Milindu Sanoj Kumarage" <[email protected]> wrote: > Hi, > > Here is the JIRA issue on this, > https://issues.apache.org/jira/browse/STRATOS-1187 > > > Here I have added some of the Python CLI frameworks I checked, I have > added a brief for each of them. I also have state a score out of 10 to > indicate how best they matches for our need. ( But they are as of my > understanding! I may not be very correct in some cases. Because some of > the ones I could write some codes and check, but for some I could not, > manly because of errors ) > > *Cement *(6/10) > A complex framework, every CLI commands is bound to a separate Python > class that acts like an controller, and each controller have several > functions. But no 'Interactive Mode' support, just 'Single command line > mode'. Supports having '-' in CLI Commands ( like 'create-tenant' ) > via aliases. But no much developments in Github repo recently. > > http://cement.readthedocs.org/ > > *Click *(7/10) > Rich with features, uses Python Decorators to bind CLI commands to > functions. But no 'Interactive Mode' support, just 'Single command line > mode'. > > http://click.pocoo.org/3/ > > > *Plac *(4/10) > A scaled down version of Python argparse package. Uses set of if else > statements to process the commands. But no 'Interactive Mode' support. > > http://plac.googlecode.com/hg/doc/plac.html > > *Cliapp *(3/10) > No 'Interactive Mode' support. > > http://code.liw.fi/cliapp/docs/ > > *pyCLI *(3/10) > No 'Interactive Mode' support. > > http://pythonhosted.org//pyCLI/ > > > *Cliff *(9/10) > A framework for building command line programs by OpenStack. It uses > plugins to define sub-commands, output formatters, and other extensions. > Supports 'Interactive Mode' using 'cmd2' and 'cmd' > > http://docs.openstack.org/developer/cliff/index.html > > *cmd *(8/10) > Python in built packages for 'Interactive Mode' applications. Maps CLI > commands to functions by function name, as def do_<whatever the command > name> ( eg: def do_command1 is for command1 ). Support only arguments but > no support for Unix-style flags. Have features like automatic command > completion in 'Interactive Mode'. > > https://docs.python.org/2/library/cmd.html > > *cmd2 *(9/10) > Extends the Python Standard Library’s cmd package. Can handle arguments > and flags. Supports for Output Redirection and Piping ( As in a Unix shell > ). Searchable command history ( bash-like history list editing ), can get > last commands with arrow keys. Able to perform shell commands while in > Interactive mode. ( eg: stratos>!ls or stratos>shell ls ) output can be > colored. > > https://pythonhosted.org/cmd2 > > > > >
