IGNORED := $(shell grep -v testenv .gitignore) VOLUME_ARG = COMPOSE_V2 := $(shell $(SHELL) -c "docker compose; exit 0" 2>&1 1>/dev/null) ifndef COMPOSE_V2 COMPOSE_COMMAND = docker compose else COMPOSE_V1 := $(shell command -v docker-compose) ifdef COMPOSE_V1 COMPOSE_COMMAND = docker-compose endif endif .PHONY: all all: @$(MAKE) usage | less # Display usage for all make targets .PHONY: usage usage: @echo @echo 'make TARGET' @echo @echo 'TESTING' @echo @echo ' make test' @echo ' - Perform tests done by continuous integration.' @echo ' This target will:' @echo ' - Remove previously built data' @echo ' - Build the site' @echo ' - Test the site using html-proofer' @echo @echo ' make up' @echo ' - Start a container to locally test the website.' @echo ' This target will:' @echo ' - Start a jekyll container (re-using it if it already exists)' @echo ' - Expose the website on port 4000 of the local host' @echo @echo ' make logs' @echo ' - Tail the logs of the running jekyll container.' @echo @echo ' make restart' @echo ' - Restart the jekyll container.' @echo @echo ' make down' @echo ' - Shutdown and remove the jekyll container.' @echo @echo ' make clean' @echo ' - Remove previously built data and any jekyll containers.' @echo @echo ' make fresh' @echo ' - Like "make clean", but also removes the docker volumes.' @echo .PHONY: test test: require-docker-compose clean $(COMPOSE_COMMAND) run --rm website test/validate .PHONY: up up: require-docker-compose $(COMPOSE_COMMAND) up --no-recreate -d @echo @echo Started docker container. It will probably take a bit of time before @echo the webserver is listening. You can run \"make logs\" to watch the logs @echo of this container. @echo @echo The site will be served at http://0.0.0.0:4000/ .PHONY: logs logs: require-docker-compose $(COMPOSE_COMMAND) logs --tail 0 -f .PHONY: restart restart: require-docker-compose $(COMPOSE_COMMAND) restart .PHONY: down down: require-docker-compose $(COMPOSE_COMMAND) down --remove-orphans ${VOLUME_ARG} .PHONY: clean clean: down rm -rf ${IGNORED} .PHONY: fresh fresh: VOLUME_ARG = -v fresh: clean .PHONY: require-docker-compose require-docker-compose: require-docker @if [ -z "$(COMPOSE_COMMAND)" ]; then \ echo "Sorry, this make target requires docker compose to be supported."; \ false; \ fi .PHONY: require-docker require-docker: @if ! command -v "docker" >/dev/null 2>&1; then \ echo "Sorry, this make target requires docker to be installed."; \ false; \ fi