summaryrefslogtreecommitdiff
path: root/Makefile
diff options
context:
space:
mode:
authorJonas Smedegaard <dr@jones.dk>2022-03-26 00:59:27 +0100
committerJonas Smedegaard <dr@jones.dk>2022-03-26 01:15:23 +0100
commitace3f2e9138ed31e961cf842b3d25f3a5d297789 (patch)
tree5ef8e9ec7203a298b6ad511954814248d3cf1fd6 /Makefile
initial draft
Diffstat (limited to 'Makefile')
-rw-r--r--Makefile40
1 files changed, 40 insertions, 0 deletions
diff --git a/Makefile b/Makefile
new file mode 100644
index 0000000..a101059
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,40 @@
+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 <div class=\"$*\">' -e '$$ a </div>' $@
+
+$(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 -s $(if $(title),--metadata pagetitle='$(if $(filter-out $(sitetitle),$(title)),$(sitetitle) -- )$(title)') -c $(shell realpath --relative-to=$(dir $@) style.css) -B topbar.html -A footer.html -f markdown -t 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