build: $(patsubst src/%.md, out/%.html, $(shell find src -type f)) \
	$(patsubst static/%, out/%, $(shell find static -type f)) \
	$(patsubst src/%, out/%, $(shell find src -type f ! -name "*.md"))

serve:
	xdg-open http://localhost:8000/
	python3 -m http.server -d out/

watch:
	find . -type f ! -path "./out/*"  | entr make build

out/%.html: src/%.md template.html template.pl
	@mkdir -p $(dir $@)
	./template.pl $< > $@

out/%: static/%
	@mkdir -p $(dir $@)
	cp $< $@

compress: build # for gzip-static, check the openbsd httpd.conf(5) man page
# grep -Il skips binary files
	find out/ -type f -exec grep -Il . {} \; \
	-exec gzip -k {} \;

publish: compress build
	rsync -rcvP --delete out/ \
	lemurianmage@slimegirl.nexus:/var/www/htdocs/slimegirl.nexus

clean:
	rm -r out/

.PHONY: build serve watch compress publish clean
