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

Reply via email to