44 lines
1.2 KiB
Makefile
44 lines
1.2 KiB
Makefile
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 := assets/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 '<link rel="%s" href="%s" title="%s">\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 $(CSSINC)
|
|
|
|
all: $(CSSINC) html
|
|
|
|
html: $(TARGETS)
|
|
|
|
clean:
|
|
@echo cleaning $(TARGETS) $(CSSINC)
|
|
@rm -f $(TARGETS) $(CSSINC)
|
|
|
|
$(CSSINC): $(CSS) $(ALTCSS)
|
|
@echo generating $@
|
|
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 $@ $<
|