Hi, Then shall we go with Cmd2 python package? Only change we have to do is call CLI commands with '_ ' instead '-', like 'list_tenants' instead of 'list-tenants'.
And for HTTP request/response handling, we can use either Python's urllib3 or Requests, a wrapper around urllib3 which gives much simpler API that leads to cleaner codes. It's been praised in the community from the beginning. Licence: Apache2 http://docs.python-requests.org/en/latest/# On Wed, Feb 25, 2015 at 3:26 PM, Milindu Sanoj Kumarage < agentmili...@gmail.com> wrote: > 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 >>> >>> >>> >>> >>> >