| 1 |
MD := $(shell find content -name '*.md')
|
| 2 |
HTML := $(patsubst content/%.md,public/%.html,$(MD))
|
| 3 |
TPL := template.html
|
| 4 |
PANDOC := pandoc -f markdown+lists_without_preceding_blankline-implicit_figures \
|
| 5 |
--template=$(TPL) --toc --toc-depth=3 -s --wrap=preserve
|
| 6 |
|
| 7 |
all: site
|
| 8 |
|
| 9 |
public/%.html: content/%.md $(TPL)
|
| 10 |
@mkdir -p $(@D)
|
| 11 |
@sec=$$(echo "$*" | cut -d/ -f1); \
|
| 12 |
buf=$$(basename $$(dirname "$*")); \
|
| 13 |
dt=$$(sed -n 's/^date: *//p' "$<" | head -1 | tr -d '"'); \
|
| 14 |
fdt=$$(date -d "$$dt" +"%B %-d, %Y" 2>/dev/null || echo "$$dt"); \
|
| 15 |
au=$$(sed -n 's/^author: *//p' "$<" | head -1 | tr -d '"[]'); \
|
| 16 |
vid=$$(sed -n 's/^video: *//p' "$<" | head -1 | tr -d '"'); vid=$${vid##*v=}; vid=$${vid##*/embed/}; \
|
| 17 |
if [ "$$sec" = community ] && [ -n "$$au" ]; then ml="by $$au ยท $$fdt"; else ml="$$fdt"; fi; \
|
| 18 |
yt=""; [ -n "$$vid" ] && yt="-M ytid=$$vid"; \
|
| 19 |
$(PANDOC) -M section="$$sec" -M buffer="$$buf.org" -M showtitle=true -M metaline="$$ml" $$yt "$<" -o "$@"
|
| 20 |
|
| 21 |
site: $(HTML) gen assets
|
| 22 |
|
| 23 |
gen: $(TPL) gen.sh $(MD)
|
| 24 |
@bash gen.sh
|
| 25 |
|
| 26 |
assets:
|
| 27 |
@mkdir -p public && cp -R assets/. public/
|
| 28 |
|
| 29 |
serve: site
|
| 30 |
@cd public && python3 -m http.server 1313
|
| 31 |
|
| 32 |
clean:
|
| 33 |
rm -rf public
|
| 34 |
|
| 35 |
.PHONY: all site gen assets serve clean
|