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