noop = space = $(noop) $(noop) comma = , langs = $(patsubst locale/%.ini,%,$(wildcard locale/*.ini)) s_pages = 01,02,03,04,05,06,07,08,09,10,11 s_langs = $(subst $(space),$(comma),$(langs)) png_pages = $(shell echo out/book_{$(s_pages)}.{$(s_langs)}.png) svg_pages = $(shell echo out/book_{$(s_pages)}.{$(s_langs)}.svg) webp_pages = $(shell echo out/book_{$(s_pages)}.{$(s_langs)}.webp) pdfs = $(shell echo out/book.{$(s_langs)}.pdf) MOST = $(pdfs) ALL = out/book.webp.tar.zst out/book.svg.tar.zst \ $(pdfs) $(png_pages) $(webp_pages) $(svg_pages) JSR = deno run .PHONY: all most: $(MOST) all: $(ALL) out: @mkdir -p out book.json: book.js DENO_NO_UPDATE_CHECK=1 $(JSR) $< > $@ $(wordlist 2,99,$(png_pages)): $(word 1,$(png_pages)) out/book_01.%.png: book.typ book.json locale/%.ini out typst compile --font-path assets/fonts --input lang=$(subst out/,,$(*)) $< out/book_\{n\}.$(subst out/,,$(*)).png $(wordlist 2,99,$(svg_pages)): $(word 1,$(svg_pages)) out/book_01.%.svg: book.typ book.json locale/%.ini out typst compile --font-path assets/fonts --input lang=$(subst out/,,$(*)) $< out/book_\{n\}.$(subst out/,,$(*)).svg out/book.%.pdf: book.typ book.json locale/%.ini out typst compile --font-path assets/fonts --input lang=$(subst out/,,$(*)) $< $@ out/%.webp: out/%.png ffmpeg -i $< -y $@ out/book.svg.tar.zst: $(svg_pages) tar -cf $@ $^ out/book.webp.tar.zst: $(webp_pages) tar -cf $@ $^ .PHONY: clean clean: rm -rf out rm -f book.json