yadm/Makefile

101 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