- .DEFAULT_GOAL := help
-
- include .env
-
- SERVER_OUTPUT = $(TARGET_SERVER_OUTPUT) # user@server.url:/path/to/website
-
- # See https://daniel.feldroy.com/posts/autodocumenting-makefiles
- define PRINT_HELP_PYSCRIPT # start of Python section
- import re, sys
-
- output = []
- # Loop through the lines in this file
- for line in sys.stdin:
- # if the line has a command and a comment start with
- # two pound signs, add it to the output
- match = re.match(r'^([a-zA-Z_-]+):.*?## (.*)$$', line)
- if match:
- target, help = match.groups()
- output.append("\033[36m%-10s\033[0m %s" % (target, help))
- # Sort the output in alphanumeric order
- output.sort()
- # Print the help result
- print('\n'.join(output))
- endef
- export PRINT_HELP_PYSCRIPT # End of python section
-
- .PHONY: install
- install: ## Install the dependencies to build the website
- python -m pip install -r requirements.txt
-
- .PHONY: build
- build: ## Build the website
- python revelateur.py
-
- .PHONY: ulid
- ulid: ## Generate a ULID (useful for passwords)
- @python -c 'from ulid import ULID;print(str(ULID()))'
-
- .PHONY: clean
- clean: ## Clean output files
- rm -rf ./output ./__pycache__
-
- .PHONY: serve
- serve: build ## Serve the website (development)
- cd output && python -m http.server 8080
-
- .PHONY: publish
- publish: build ## Publish the website online (rsync)
- # With rsync 3.1.0 you can use `--info=progress2`
- rsync -P -rzc --stats --cvs-exclude --delete ./output/ $(SERVER_OUTPUT)
-
- .PHONY: help
- help:
- @python -c "$$PRINT_HELP_PYSCRIPT" < $(MAKEFILE_LIST)
|