Hi, Here I have included the licences of each framework :)
*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/ Licence : http://cement.readthedocs.org/en/latest/license/ Redistribution and use in source and binary forms, with or without modification, are permitted under given conditions. *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/ Licence : http://click.pocoo.org/3/license/ three-clause BSD License *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 Licence: http://plac.googlecode.com/hg/doc/plac.html BSD license *Cliapp *(3/10) No 'Interactive Mode' support. http://code.liw.fi/cliapp/docs/ Licence : https://github.com/rshk/CliApp/blob/master/LICENSE Apache License *pyCLI *(3/10) No 'Interactive Mode' support. http://pythonhosted.org//pyCLI/ Licence: http://sourceforge.net/projects/pycli/ GNU General Public License version 2.0 (GPLv2) *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 Licence: https://launchpad.net/python-cliff Apache Licence *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 Licence: https://docs.python.org/2/license.html GPL compatible *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 Licence: https://pypi.python.org/pypi/cmd2/0.6.8 MIT License On Wed, Feb 25, 2015 at 10:29 AM, Chamila De Alwis <chami...@wso2.com> wrote: > 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" <agentmili...@gmail.com> > 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 >> >> >> >> >>