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
>

Reply via email to