From Fedora Project Wiki
(Created page with "= Task for volunteers = '''Complexity''': approx. 20h '''Contact person:''' Honza Horak <hhorak AT redhat.com> '''Description:''' Get familiar with [http://devassistant.org...")
 
No edit summary
 
Line 8: Line 8:


'''Description:'''
'''Description:'''
Get familiar with [http://devassistant.org/ DevAssistant] project and implement a new assistant for Python CLI. This assistant would be used when somebody wants to implement a new CLI tool written in Python 3.
Get familiar with [http://devassistant.org/ DevAssistant] project, it's language for writing assistant plug-ins and implement a new assistant plug-in for ''Python CLI application''. This assistant would be used when somebody wants to implement a new ''CLI tool written in Python 3''.


This assistant should work similar to Python lib assistant, but result should be a mockup application in Python, not library. This simple application should:
This assistant should work similar to ''Python lib assistant'', but the result should be a mockup application in Python, not only a library. This simple application should:
* include setup.py and other usual Python project files (this should install one script into standard Python 3 directory with one entry script in /usr/bin)
* generate proper setup.py and other usual Python project files (README.md, LICENSE and at least one Python script that would be installed into standard Python 3 directory with an entry script in /usr/bin -- all handled by setup.py)
* parse example arguments from the command-line (it should use some library for that; example arguments have longer and shorter variant)
* parse few example arguments from the command-line (it should use some library for that; example arguments should have longer and shorter variant; one argument pair accepts additional argument, one would be used without additional argument)
* read from `stdin` or file if the last argument is file
* read input from `stdin` or file if the last argument is a path
* prints some output into `stdout`, unless -o option is specified
* print some output into `stdout`, unless -o [file] option is specified -- in this case it writes output to the given file
* optionally the mockup application could include dynamically loaded modules, so it would be easily extensible
* optionally the mockup application could include dynamically loaded modules, so it would be easily extensible
The bigger part of this task is preparing the mockup application, implementing the DevAssistant plugin should be very similar to existing Python lib plugin.

Latest revision as of 07:54, 19 September 2014

Task for volunteers

Complexity: approx. 20h

Contact person: Honza Horak <hhorak AT redhat.com>

Description: Get familiar with DevAssistant project, it's language for writing assistant plug-ins and implement a new assistant plug-in for Python CLI application. This assistant would be used when somebody wants to implement a new CLI tool written in Python 3.

This assistant should work similar to Python lib assistant, but the result should be a mockup application in Python, not only a library. This simple application should:

  • generate proper setup.py and other usual Python project files (README.md, LICENSE and at least one Python script that would be installed into standard Python 3 directory with an entry script in /usr/bin -- all handled by setup.py)
  • parse few example arguments from the command-line (it should use some library for that; example arguments should have longer and shorter variant; one argument pair accepts additional argument, one would be used without additional argument)
  • read input from stdin or file if the last argument is a path
  • print some output into stdout, unless -o [file] option is specified -- in this case it writes output to the given file
  • optionally the mockup application could include dynamically loaded modules, so it would be easily extensible

The bigger part of this task is preparing the mockup application, implementing the DevAssistant plugin should be very similar to existing Python lib plugin.