Developing grok
===============

Preparing for grok development
------------------------------

The Grok development sandbox is set up via `zc.buildout`_

.. _zc.buildout: http://cheeseshop.python.org/pypi/zc.buildout

You may have setuptools already installed for your system Python. In
that case, you may need to upgrade it first because buildout requires
a very recent version::

    $ sudo easy_install -U setuptools

If this command fails because easy_install is not available, there is
a good chance you do not have setuptools available for your system
Python. If so, there is no problem because setuptools will be
installed locally by buildout.

Bootstrap the buildout environment::

    $ python bootstrap/bootstrap.py

and run the buildout command::

    $ bin/buildout
    [lots of stuff will be downloaded and installed here]

Note that if you have more than one sandbox for a Zope-based web
application, it will probably make sense to share the eggs between the
different sandboxes.  You can tell zc.buildout to use a central eggs
directory by creating ``~/.buildout/default.cfg`` with the following
contents::

    [buildout]
    eggs-directory = /home/bruno/buildout-eggs

Note, that this is the grok core package. If you want to develop Grok
applications you might consider to use `grokproject
<http://pypi.python.org/pypi/grokproject>`_ instead.


Running the demo applications
-----------------------------

You can start Zope with the demo applications installed with the
following command:

    $ bin/paster serve parts/etc/deploy.ini

If you now connect to port 8080 and log in with username 'grok',
password 'grok', you should be able to add the grok-based applications
(such as grokwiki) from the menu.

Running the tests
-----------------

Grok's tests are easily run by executing the test runner that's
installed in the ``bin`` directory::

    $ bin/test

Generating the website files
----------------------------

Grok's tutorial documents for the website can easily be generated
using the following scripts in ``bin``::

    $ bin/grokdocs2html

The output is by default written to ``build/html/``.

Run::

    $ bin/grokdocs2html -h

to get all options supported.

With::

    $ bin/grokdocs2latex

you get LaTeX output which can be used to generate PDF docs. This
requires a working LaTeX installed on your system.
