all: debug .PHONY: all # Builds the debug release inside the Alpine container. For build caching, two # volumes are used named `fej_build-cache` and `fej_registry-cache`. These # images are automatically created for you if they don't exist. If you # encounter any strange build errors, you can try removing this volumes to # start a completely fresh build. debug: @ ./build -m dev -a run build .PHONY: debug # Builds the release version. In contrary to the debug version, this build # doesn't use volumes for caching, as this would require the build to happen # during runtime instead of during the building of the image. Instead, it uses # the new `--mount` feature from Buildkit. This does mean that only very recent # Docker engines can build the release version (in my case, at the time of # writing this, 20.10.5). release: @ ./build -m rel .PHONY: release # This builds the release version, and pushes all relevant tags to my Docker # Hub repository, namely chewingbever/fej push: @ ./build -m rel -a push .PHONY: push # This builds the debug release, and runs it detached. The reason we detach the # container is because Rocket has a tendency to ignore ctlr-c when inside a # container, which gets annoying really fast. run: @ ./build -m dev -a run .PHONY: run # As a workaround, we just have a stop command that stops the container. stop: @ docker stop -t 2 fej @ docker stop fej_db .PHONY: stop # This attaches to the running container, essentially giving the same result as # just running `cargo run` locally. logs: @ docker logs -f fej .PHONY: logs # This just starts up a shell inside the fej container sh: @ docker exec -it fej sh .PHONY: sh # Starts a psql session in the database container dbsh: @ docker exec -it fej_db psql -U fej -d fej # Builds the debug version, and runs the tests (but doesn't detach). test: @ ./build -m dev -a run -l -- test --no-fail-fast .PHONY: test # Runs the cargo code formatter on your code. format: @ cargo fmt .PHONY: format # Lints your code. This also gets run in the pre-commit hook, basically # preventing you from committing badly-formatted code. lint: @ cargo fmt -- --check .PHONY: lint # This builds the documentation for the project, excluding the documentation. docs: @ cargo doc --no-deps .PHONY: docs