Rotagen
Rotagen is a simple, configurable rota generator program. The people available, jobs that need doing, slots available for doing jobs and constraints/exceptions (such as someone not being available for a particular slot or being unable to do a certain job) are specified in a config file in an ini-like format.
Building
The tool is written in C99 and has no dependencies other than the C
standard library. A Makefile is provided to build the executable on
POSIX systems; to use it to build a binary simply run make
from the
root of the repository.
Running
The tool must have a configuration file to run. The file's path can
be specified in the first command-line argument, or will default to
"rotagen.conf" in the working directory if unspecified. For example,
if your config file was at the path "~/foo.conf", you would run
rotagen ~/foo.conf
. There is an example configuration in
example.conf
; refer to this for the configuration file syntax.
Bugs / Limitations
- The tool will hang indefinitely if it is unable to find a rota that satisfies the constraints.
- If someone is exempted from a slot or job due to a contraint this does not affect the probability they will be allocated to other slots or jobs so the generated rotas are slightly unfair.
- The behaviour of ensuring someone is not allocated for two consecutive slots is not configurable, it should be specifiable as a constraint in the config file
- The only types of contraint that are supported are slot or job exemptions
License
Rotagen is available under the GNU Affero General Public License,
version 3, see the LICENSE
file for details. Contributions are very
welcome and no contributor license agreement is required.