Hi Milindu, Is there any way of using "-" in the CLI commands. I did not get why a CLI framework would block "-" character.
Thanks On Fri, Feb 27, 2015 at 2:49 PM, Milindu Sanoj Kumarage < agentmili...@gmail.com> wrote: > 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 >>>> >>>> >>>> >>>> >>>> >> > -- Imesh Gunaratne Technical Lead, WSO2 Committer & PMC Member, Apache Stratos