Hi Milindu, Great work! We will have a look at this and get back to you. In the mean time can you provide some details on this sample?
Thanks On Thu, Mar 5, 2015 at 12:12 AM, Milindu Sanoj Kumarage < agentmili...@gmail.com> wrote: > Hi, > I spend last few days investigating a workarounds to solve that '-' > problem :) It seems it is possible. > > BTW, I checked the possibility of uploading the final product to Pip where > anyone can install Stratos CLI using Pip like > $Pip install stratos > > and then run like > > $ stratos -u abcdef > > What's your idea on that? ( We can also provide python script with a > wrapper for Windows and Linux ) > > > > > > On Fri, Feb 27, 2015 at 9:45 PM, Milindu Sanoj Kumarage < > agentmili...@gmail.com> wrote: > >> Hi, >> >> the reason is Cmd2 ( and most of the python CLI frameworks ) uses >> function mapping to CLI commands, that is, >> >> // stratos>greet >> def do_greet(): >> print("hi") >> >> will become the 'greet' command. >> >> But if we need, >> >> 'list-tenants' we have to code it as >> >> def do_list-tenants: >> #codes of list tenant command >> >> But using '-' in names of functions ( def*enitions* ) in Python is not >> allowed. >> What shall we do? I'm okay even to write it from the scratch. >> >> >> >> On Fri, Feb 27, 2015 at 9:29 PM, Imesh Gunaratne <im...@apache.org> >> wrote: >> >>> 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 >>> >> >> > -- Imesh Gunaratne Technical Lead, WSO2 Committer & PMC Member, Apache Stratos