SHELL := /bin/bash # CSS to be included as stylesheets and alternate stylesheets CSS := assets/ghost.css ALTCSS := assets/ghost-dark.css assets/ghost-caca.css TARGETS := $(patsubst %.md,%.html,$(wildcard *.md)) CSSINC := css.inc # our main html5 template, mostly taken from : # https://github.com/jgm/pandoc-templates/blob/master/default.html5 TEMPLATE := assets/pandoc-template.html5 define ADD_LINE printf '\n' "$(2)" "$(1)" "$(notdir $(basename $(1)))" >> $(3); endef # provide a title to pandoc. We take the first line starting with '#', # and remove initial '#' and spaces TITLE = $(shell sed -n '0,/^\#/ s/^[\# ]*//p' $1) OPTS = --standalone --include-in-header=$(CSSINC) --template=$(TEMPLATE) \ --from=gfm --to=html5 .PHONY: all html clean all: $(CSSINC) html html: $(TARGETS) clean: @echo cleaning $(TARGETS) $(CSSINC) @rm -f $(TARGETS) $(CSSINC) $(CSSINC): $(CSS) $(ALTCSS) @echo generating $@ @#echo deps=$^ @rm -f $@ @$(foreach css,$(CSS),$(call ADD_LINE,$(css),stylesheet,$@)) @$(foreach css,$(ALTCSS),$(call ADD_LINE,$(css),alternate stylesheet,$@)) %.html: %.md $(CSSINC) @echo generating $@ @pandoc $(OPTS) --metadata=title:"$(call TITLE,$<)" -o $@ $<