Skip to content

Commit

Permalink
Added developer instructions to Sphinx documentation.
Browse files Browse the repository at this point in the history
  • Loading branch information
paranoidi committed Apr 27, 2013
1 parent 91cbb28 commit 8526ecf
Show file tree
Hide file tree
Showing 2 changed files with 91 additions and 2 deletions.
75 changes: 75 additions & 0 deletions docs/develop/develop.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
Develop
=======

We welcome all new developers and contributors with very friendly community.
Join #FlexGet @ freenode.

How do I get started?
---------------------

Set up development environment, which is basically just two steps.

#. `GIT clone`_ our repository.
#. Run ``bootstrap.py`` with Python 2.6.x - 2.7.x.

For easier collaboration we recommend forking us on github and sending pull
request. Once we see any semi-serious input from a developer we will grant
write permissions to our central repository. You can also request this earlier
if you wish.

.. _GIT clone: https://github.com/Flexget/Flexget

Environment
-----------

Once you have bootstrapped the environment you have fully functional FlexGet in
a `virtual environment`_ in your clone directory. You can easily add or modify
existing plugins in here and it will not mess your other FlexGet instances in
any way. The commands in the documentation expect the virtual environment to be
activated. If you don't activate it you must run commands explicitly from under
environment ``bin`` directory or ``scripts`` in windows. E.g. ``flexget`` would
be ``bin/flexget`` (at project root) in unactivated `virtual environment`_.

FlexGet project uses `paver`_ to provide development related utilities and tasks.
Run ``paver --help`` to see what commands are available. Some of these will
be mentioned later.

.. _virtual environment: https://pypi.python.org/pypi/virtualenv
.. _paver: http://paver.github.io/paver/

Code quality
------------

Unit tests
~~~~~~~~~~

There are currently over 250 unit tests ensuring that existing functionality
is not accidentally broken.

Easiest way to run tests is trough paver::

paver test

By default no online tests are executed, these can be enabled with ``--online``
argument. There are other ways to run the tests as well, more specifically
we use `nose`_ framework.

Unit tests are not mandatory for a plugin to be included in the FlexGet
distribution but it makes maintaining our code trough project life and
refactoring so much easier.

Code Style
~~~~~~~~~~

All code should be formatted according to `Python PEP8`_ recommendations. With
the exception of line length limit at 79 characters. FlexGet uses 120 characters
instead.

To run PEP8 checker::

paver pep8

We do have some violations in our codebase, but new code should not add any.

.. _nose: https://nose.readthedocs.org/
.. _Python PEP8: http://www.python.org/dev/peps/pep-0008/
18 changes: 16 additions & 2 deletions docs/index.rst
Original file line number Diff line number Diff line change
Expand Up @@ -6,18 +6,30 @@
FlexGet's documentation!
========================

The core section is most relevant for developers. Plugins documentation
section may miss some plugins since each plugin must be manually added to the .rst files.
This documentation contains developer guide, technical core documentation and relevant plugin documentation that
is relevant to the developers wishing to extend FlexGet.

**Indices and tables**

* :ref:`genindex`
* :ref:`modindex`
* :ref:`search`


Instructions for aspiring developer
-----------------------------------

.. toctree::
:maxdepth: 2

develop/develop


Core documentation
------------------

Describe FlexGet framework.

.. toctree::
:maxdepth: 4

Expand All @@ -26,6 +38,8 @@ Core documentation
Plugins
-------

This list is not up-to-date and should probably only contain plugins that serve API to other plugins.

.. toctree::
:maxdepth: 2

Expand Down

0 comments on commit 8526ecf

Please sign in to comment.