markdown-snippets := topbar.md footer.md hypertext-snippets = $(markdown-snippets:%.md=%.html) markdown := $(filter-out $(markdown-snippets),$(wildcard *.md */*.md */*/*.md)) hypertext = $(subst index/index,index,$(markdown:%.md=%/index.html)) graph := $(wildcard *.dot */*.dot */*/*.dot) vectorimage-graph := $(graph:%.dot=%.svg) sitetitle := $(shell head --lines=1 index.md \ | grep --perl-regexp --only-matching '^\#\s*\K(\S+(\s\S+)*)+') all: $(hypertext) $(vectorimage-graph) style.css update: .git git pull $(MAKE) all $(hypertext-snippets): %.html: %.md Makefile pandoc -f markdown -t html -o $@ $< sed -i -e '1i
' -e '$$ a
' $@ $(vectorimage-graph): %.svg: %.dot Makefile dot -Tsvg -o$@ $< %.html %/index.html: %.md $(hypertext-snippets) Makefile $(eval title = $(shell head --lines=1 $< \ | grep --perl-regexp --only-matching '^\#\s*\K(\S+(\s\S+)*)+')) $(if $(filter-out ./,$(dir $@)),mkdir -p $(dir $@)) pandoc -f markdown -t html -s \ $(if $(title),\ $(if $(filter-out $(sitetitle),$(title)),$(strip \ --metadata pagetitle='$(sitetitle) -- $(title)'),$(strip \ --metadata pagetitle='$(title)'))) \ -c $(shell realpath --relative-to=$(dir $@) style.css) \ -B topbar.html \ -A footer.html \ -o $@ $< %.css : %.scss Makefile sassc --load-path /usr/share/sass --style compressed $< $@ clean: rm -f $(vectorimage-graph) find * -type f -name '*.html' -delete find * -type d -empty -delete rm -f style.css style.css.map rm -rf .sass-cache MAKEFLAGS += --jobs .NOTPARALLEL: source .PHONY: all update clean