PANDOC ?= pandoc

all: slides.html

slides.html: slides.md template.html
	$(PANDOC) -t revealjs --slide-level=3 -s --template=template.html -o $@ $<

watch:
	@( echo slides.md ; \
	   echo template.html ; \
	   echo assets/bundle.js ; \
	   echo assets/bundle.css ; \
	   echo assets/styles.css ) | entr -c $(MAKE) --no-print-directory

ALL_FONTS := \
	EtelkaText EtelkaText-Italic EtelkaText-Bold EtelkaText-BoldItalic \
	EtelkaMonospaceBoldItalic EtelkaMonospaceBold EtelkaMonospaceItalic EtelkaMonospace

FONTS := $(filter-out EtelkaMono%,$(ALL_FONTS))
WOFF2 := $(patsubst %,assets/%.woff2,$(FONTS))

MONO_FONTS := $(filter EtelkaMonospace%,$(ALL_FONTS))
MONO_WOFF2 := $(patsubst %,assets/%.mono.woff2,$(MONO_FONTS))

define subset-cmd
pyftsubset $< --text-file=$1 --flavor=woff2 --obfuscate-names --output-file=$@
ots-sanitize $@
endef

slides.txt: slides.html
	pup -p 'text{}' < $< > $@

slides.mono.txt: slides.html
	pup -p 'pre, code, textarea, tt' 'text{}' < $< > $@

assets/%.woff2: font/%.otf slides.txt
	$(call subset-cmd,slides.txt)

assets/%.mono.woff2: font/%.otf slides.mono.txt
	$(call subset-cmd,slides.mono.txt)

font: $(WOFF2) $(MONO_WOFF2)

bundle: assets/bundle.css assets/bundle.js

assets/bundle.css assets/bundle.js: main.js rollup.config.js
	node_modules/.bin/rollup -c

.PHONY: watch font bundle
