aboutsummaryrefslogtreecommitdiff
path: root/Makefile
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--Makefile79
1 files changed, 79 insertions, 0 deletions
diff --git a/Makefile b/Makefile
new file mode 100644
index 0000000..4bbb974
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,79 @@
+SHELL := /usr/bin/env bash
+.DEFAULT_GOAL := help
+.RECIPEPREFIX +=
+
+all: clean build publish
+.PHONY: all
+
+## Build full website.
+build: result
+.PHONY: build
+
+result:
+ nix-build
+
+## Remove all files not tracked by git.
+clean:
+ git clean -fdx
+.PHONY: clean
+
+## Sync all static files to server with rsync.
+publish:
+ rsync --verbose --copy-links --progress --stats --update --recursive result/ root@euandre.org:/home/user-data/www/default
+.PHONY: publish
+
+# Taken from https://gist.github.com/klmr/575726c7e05d8780505a
+
+# Inspired by <http://marmelab.com/blog/2016/02/29/auto-documented-makefile.html>
+# sed script explained:
+# /^##/:
+# * save line in hold space
+# * purge line
+# * Loop:
+# * append newline + line to hold space
+# * go to next line
+# * if line starts with doc comment, strip comment character off and loop
+# * remove target prerequisites
+# * append hold space (+ newline) to line
+# * replace newline plus comments by `---`
+# * print line
+# Separate expressions are necessary because labels cannot be delimited by
+# semicolon; see <http://stackoverflow.com/a/11799865/1968>
+help:
+ @echo "$$(tput bold)Available rules:$$(tput sgr0)"
+ @echo
+ @sed -n -e "/^## / { \
+ h; \
+ s/.*//; \
+ :doc" \
+ -e "H; \
+ n; \
+ s/^## //; \
+ t doc" \
+ -e "s/:.*//; \
+ G; \
+ s/\\n## /---/; \
+ s/\\n/ /g; \
+ p; \
+ }" ${MAKEFILE_LIST} \
+ | LC_ALL='C' sort --ignore-case \
+ | awk -F '---' \
+ -v ncol=$$(tput cols) \
+ -v indent=19 \
+ -v col_on="$$(tput setaf 6)" \
+ -v col_off="$$(tput sgr0)" \
+ '{ \
+ printf "%s%*s%s ", col_on, -indent, $$1, col_off; \
+ n = split($$2, words, " "); \
+ line_length = ncol - indent; \
+ for (i = 1; i <= n; i++) { \
+ line_length -= length(words[i]) + 1; \
+ if (line_length <= 0) { \
+ line_length = ncol - indent - length(words[i]) - 1; \
+ printf "\n%*s ", -indent, " "; \
+ } \
+ printf "%s ", words[i]; \
+ } \
+ printf "\n"; \
+ }' \
+| more $(shell test $(shell uname) == Darwin && echo '--no-init --raw-control-chars')