forked from tildeverse/zine
90 lines
2.1 KiB
Makefile
90 lines
2.1 KiB
Makefile
# customizable output dir
|
|
DEST_DIR ?= dist
|
|
|
|
# find all issues and determine required output files
|
|
ISSUES != find . -path "./issues/*" -type d
|
|
DEST_PDF_FILES := $(ISSUES:./issues/%=$(DEST_DIR)/issue-%.pdf)
|
|
DEST_HTML_FILES := $(ISSUES:./issues/%=$(DEST_DIR)/issue-%.html)
|
|
DEST_EPUB_FILES := $(ISSUES:./issues/%=$(DEST_DIR)/issue-%.epub)
|
|
|
|
# deps
|
|
PANDOC != command -v pandoc 2> /dev/null
|
|
XELATEX != command -v xelatex 2> /dev/null
|
|
|
|
# default target
|
|
help:
|
|
$(info all - build all formats)
|
|
$(info pdf - generate all issues as pdf)
|
|
$(info html - generate all issues as html)
|
|
$(info epub - generate all issues as epub)
|
|
$(info clean - remove build artifacts)
|
|
|
|
all: dep-pandoc pdf html epub
|
|
|
|
pdf: dep-xelatex $(DEST_PDF_FILES)
|
|
|
|
html: $(DEST_HTML_FILES)
|
|
|
|
epub: $(DEST_EPUB_FILES)
|
|
|
|
$(DEST_DIR)/issue-%.pdf: issues/%
|
|
$(info building $@)
|
|
@$(PANDOC) \
|
|
--file-scope \
|
|
--from markdown \
|
|
--to latex \
|
|
--pdf-engine xelatex \
|
|
--table-of-contents \
|
|
--lua-filter increase-header-levels.lua \
|
|
--variable title:"tildeverse zine $@" \
|
|
--standalone \
|
|
--output $@ \
|
|
$</*.md
|
|
|
|
$(DEST_DIR)/issue-%.html: issues/%
|
|
$(info building $@)
|
|
@$(PANDOC) \
|
|
--file-scope \
|
|
--from markdown \
|
|
--to html \
|
|
--standalone \
|
|
--table-of-contents \
|
|
--lua-filter header-permalinks.lua \
|
|
--lua-filter increase-header-levels.lua \
|
|
--metadata title:"tildeverse zine $@" \
|
|
--variable include-before:"<div class=\"container\">" \
|
|
--variable include-after:"</div>" \
|
|
--css https://tilde.team/css/hacker.css \
|
|
--output $@ \
|
|
$</*.md
|
|
|
|
$(DEST_DIR)/issue-%.epub: issues/%
|
|
$(info building $@)
|
|
@$(PANDOC) \
|
|
--file-scope \
|
|
--from markdown \
|
|
--to epub \
|
|
--standalone \
|
|
--table-of-contents \
|
|
--lua-filter increase-header-levels.lua \
|
|
--metadata title:"tildeverse zine $@" \
|
|
--output $@ \
|
|
$</*.md
|
|
|
|
clean:
|
|
$(info removing build artifacts)
|
|
@rm $(DEST_DIR)/*.{pdf,html,epub}
|
|
|
|
dep-pandoc:
|
|
ifndef PANDOC
|
|
$(error missing dependency 'pandoc'. please install and try again)
|
|
endif
|
|
|
|
dep-xelatex:
|
|
ifndef XELATEX
|
|
$(error missing dependency 'xelatex'. please install and try again)
|
|
endif
|
|
|
|
.PHONY: clean help dep-pandoc dep-xelatex
|
|
|