100 lines
2.5 KiB
Makefile
100 lines
2.5 KiB
Makefile
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
|