Developing the system

Set-up of the development environment is very similar to a production environment, see README.rst for details on how to do this.

The main difference is to use PROJECT_MODE= development (or not include any PROJECT_MODE, development is default), in your local-conf.mk. This will stop CLiC from being started automatically so you can run the server in debug mode. It will also disable NGINX’s server cache so you won’t get stale responses.

To start the API server in debug mode:

make start

To log database queries that the API makes:

QUERY_LOG=yes make start
QUERY_LOG=explain make start  # Also include explain plan

Client-side development

To run tests, lint code and compile:

make -C client

…you will need to do this after any change to the HTML/CSS/JS source.

Server-side development

To run unit tests:

make -C server test

Coverage reports

Coverage reports can be built for both client and server:

make coverage

…the reports will be available through the reports at the end.

Exercise API integration tests

This repository contains some canned API calls and output that can be run against any server. For example:

./exercise.sh http://cal-n-clic-01.bham.ac.uk exercise_outputs/*

Favico regeneration

Upload assets/logo.svg to http://cthedot.de/icongen/, and place the results into `client/www/index.html and client/www/iconx as appropriate.

Preparing a release

Steps for making a release:

VERSION="2.0.0-beta5"
echo -e "## ${VERSION} ($(date +'%Y-%m-%d'))\n" | cat - CHANGELOG.md > CHANGELOG.md.n
mv CHANGELOG.md.n CHANGELOG.md
git commit -m "CHANGELOG: Release ${VERSION}" CHANGELOG.md
git tag -am "Release ${VERSION}" v${VERSION} HEAD
git push && git push --tags

Documentation

Whilst generally we use readthedocs for documentation sphinx will also be run locally for testing, and if it proves useful in future.

To re-build documentation:

make -C docs

To view the documenation built, go to /local-docs/ for your instance.

By default, this only generates the LaTeX needed for the PDF output, which will be available in docs/_build/latex/clic-userguide.tex. To build a PDF from this, you first need to install:

apt install texlive-latex-recommended \
            texlive-fonts-recommended \
            texlive-latex-extra \
            latexmk

…then you can build with:

make -C docs pdf

The pdf will be available at /local-docs/latex/clic-userguide.pdf.