diff options
author | EuAndreh <eu@euandre.org> | 2018-12-21 14:50:01 -0200 |
---|---|---|
committer | EuAndreh <eu@euandre.org> | 2018-12-21 14:50:01 -0200 |
commit | d945f8de9de2564dc42bcb6ed8589f518ae9b5f0 (patch) | |
tree | 851f26e579059bb9d7c74042fabad21ff04964c9 | |
parent | TODOs.org. (diff) | |
download | euandre.org-d945f8de9de2564dc42bcb6ed8589f518ae9b5f0.tar.gz euandre.org-d945f8de9de2564dc42bcb6ed8589f518ae9b5f0.tar.xz |
Add Makefile for building and publishing website.
-rw-r--r-- | Makefile | 79 |
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') |