SOURCE_FOLDER := source

SHELL := bash

ASCIIDOC_FILES := $(wildcard $(SOURCE_FOLDER)/*.adoc)

FIGURES = $(shell find . -name '*.svg')

PDF_NAME := book.pdf
PDF_PATH := output/$(PDF_NAME)

EPUB_NAME := book.epub
EPUB_PATH := output/$(EPUB_NAME)

ASCIIDOC_FLAGS = \
  --doctype book \
  --failure-level ERROR

.PHONY: all count clean lint epubcheck

all: $(PDF_PATH) $(EPUB_PATH)

$(PDF_PATH): $(ASCIIDOC_FILES) $(FIGURES) Makefile metadata.yaml | output
	asciidoctor-pdf book.adoc $(ASCIIDOC_FLAGS) \
		-o $@ \
		-r asciidoctor-diagram \
		-r asciidoctor-mathematical

$(EPUB_PATH): $(ASCIIDOC_FILES) $(FIGURES) Makefile metadata.yaml | output
	asciidoctor-epub3 book.adoc $(ASCIIDOC_FLAGS) \
		-o $@ \
		-r asciidoctor-diagram \
		-r asciidoctor-mathematical

count:
	@dir="$(SOURCE_FOLDER)"; \
	total=0; \
	while read -r file; do \
		words=$$(wc -w < "$$file"); \
		total=$$((total + words)); \
		printf "%6d %s\n" "$$words" "$$file"; \
	done < <(find "$$dir" -type f -name "*.adoc" | sort); \
	printf "%6d total\n" "$$total"

epubcheck: $(EPUB_PATH)
	epubcheck $(EPUB_PATH)

output:
	mkdir output

clean:
	rm -vrf output

lint:
	vale source/
