Write README

This commit is contained in:
Rhizome 2024-04-08 18:45:40 +01:00
parent f6af8f5a26
commit d47d1e2674

42
README.md Normal file
View File

@ -0,0 +1,42 @@
# 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.