Great! Nice to hear that. We might not need to use "_", it would be better if auto completion could also use commands with "-" pattern.
At the moment we do not have much client side validations, most of them are done in server. You could refer [1] for this. [1] https://cwiki.apache.org/confluence/display/STRATOS/4.1.0+CLI+Guide On Thu, Mar 5, 2015 at 6:23 PM, Milindu Sanoj Kumarage < agentmili...@gmail.com> wrote: > Hi, > > With this workaround ( actually it is not a workaround, Cmd2 really has > aliases feature! but in different name ) we can have both "list-tenants" > and "list_tenants" working without a problem. Therefor the Single > command line mode would work exactly like the Java CLI, and also the > Interactive mode. But in Interactive mode, auto-complete still suggests " > list_tenants" instead of "list-tenants". we can change that too if you > really need, but needs some alternations that may not be very beautiful, > but not ugly too. > > one more question, we have to validate the parameters before sending to > the REST API, right? Do we have any document for these validations, or is > it the codes I have to follow? > > > > On Thu, Mar 5, 2015 at 3:50 AM, Imesh Gunaratne <im...@apache.org> wrote: > >> 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 >> > > -- Imesh Gunaratne Technical Lead, WSO2 Committer & PMC Member, Apache Stratos