Concentrate combines realtime transit information from multiple sources into single output files.
Concentrate can either be configured via config/config.exs
or a JSON environment variable as CONCENTRATE_JSON
: more details are available in configuration.md.
See architecture.md for the overall architecture of the system.
# after installing asdf from https://github.com/asdf-vm/asdf..
asdf install
# get Elixir dependencies
mix deps.get
# add pre-commit hook to verify formatting/tests/types
ln -s ../../hooks/pre-commit .git/hooks/pre-commit
# make sure everything passes! (slowest to fastest)
mix format --check-formatted
mix credo
mix dialyzer
See the section on tests below for information on running unit tests, which requires having a local MQTT broker running.
If you run into issues compiling snabbkaffe
:
rm -fr deps/quicer
mix deps.get
mix deps.compile
To run the tests, first install and setup Colima, Docker, and docker-compose:
brew install docker docker-compose colima
colima start
mkdir -p ${DOCKER_CONFIG:-"~/.docker"}/cli-plugins
ln -sfn /opt/homebrew/opt/docker-compose/bin/docker-compose ${DOCKER_CONFIG:-"~/.docker"}/cli-plugins/docker-compose
Then, start the Compose configuration in a separate window or tab and run the tests:
docker compose up
mix test
Concentrate comes with a Dockerfile, allowing you to build an image that can be run anywhere Docker works. It's a multi-stage build, so it requires at least Docker 17.05.
# build
docker build -t concentrate:latest .
# run
docker run concentrate:latest