Development

Environment

Before moving on to the actual setup, there are few important notes:

  • The only supported and (sort of tested) way of installation and using ``gluetool`` is a separate virtual environment! It may be possible to install gluetool directly somewhere into your system but we don’t recommend that, we don’t use it that way, and we don’t know what kind of hell you might run into. Please, stick with virtualenv.
  • The tested distributions (as in “we’re using these”) are either recent Fedora, RHEL or CentOS. You could try to install gluetool in a different environment - or even development trees of Fedora, for example - please, make notes about differences, and it’d be awesome if your first merge request could update this file :)

Requirements

To begin digging into gluetool sources, there are few requirements:

  • virtualenv utility
  • ansible-playbook

Installation

1. Create a virtual environment

virtualenv -p /usr/bin/python2.7 <virtualenv-dir>
. <virtualenv-dir>/bin/activate

2. Clone gluetool repository - your working copy

git clone github:<your username>/<your fork name>
cd gluetool

3. Install gluetool

python setup.py develop

4. (optional) Activate Bash completion

gluetool --module-path gluetool_modules/ bash-completion > gluetool-bash-completition
mv gluetool-bash-completition $VIRTUAL_ENV/bin/gluetool-bash-completition
echo "source $VIRTUAL_ENV/bin/gluetool-bash-completition" >> $VIRTUAL_ENV/bin/activate

To activate bash completion immediately, source the generated file. Otherwise, it’d start working next time you’d activate your virtualenv.

. ./gluetool-bash-completition

5. Add configuration

gluetool looks for its configuration in a local directory (among others), in ./.gluetool.d to be specific. Add configuration for the modules according to your preference.

Now every time you activate your new virtualenv, you should be able to run gluetool:

gluetool -h
usage: gluetool [opts] module1 [opts] [args] module2 ...

optional arguments:
...

Test suites

The test suite is governed by tox and py.test. Before running the test suite, you have to install tox:

pip install tox

Tox can be easily executed by:

tox

Tox also accepts additional options which are then passed to py.test:

tox -- --cov=gluetool --cov-report=html:coverage-report

Tox creates (and caches) virtualenv for its test runs, and uses them for running the tests. It integrates multiple different types of test (you can see them by running tox -l).

Documentation

Auto-generated documentation is located in docs/ directory. To update your local copy, run these commands:

ansible-playbook ./generate-docs.yml

Then you can read generated docs by opening docs/build/html/index.html.