mirror of
https://codeberg.org/mhwombat/nix-book.git
synced 2025-12-27 00:34:58 +08:00
51 lines
1.9 KiB
Makefile
51 lines
1.9 KiB
Makefile
# Tab characters are invisible evil. Use a different prefix in recipes.
|
||
.RECIPEPREFIX = >
|
||
|
||
# The operator ‘!=’ is not negation; it executes a shell script and sets a variable to its output.
|
||
STATIC_ADOC_FILES != find source -name '*.adoc'
|
||
GENERATED_ADOC_FILES != find source -name '*.adoc0' | sed 's/\.adoc0/-generated.adoc/'
|
||
ADOC_FILES = $(STATIC_ADOC_FILES) $(GENERATED_ADOC_FILES)
|
||
DATE != date +%F
|
||
|
||
MAIN_ADOC_FILE = source/book.adoc
|
||
HTML_FILE = index.html
|
||
PDF_FILE = wombats-book-of-nix.pdf
|
||
|
||
ADOC_ATTR_DATE = -a build_date=$(DATE)
|
||
ADOC_ATTR_AUTHORS = -a authors="Amy de Buitléir"
|
||
ADOC_ATTRIBUTES = $(ADOC_ATTR_DATE) $(ADOC_ATTR_AUTHORS)
|
||
ADOC_HTML_ATTRIBUTES = -a stylesheet=../themes/html.css
|
||
ADOC_PDF_ATTRIBUTES = -a pdf-themesdir=themes -a pdf-theme=pdf
|
||
|
||
.PHONY: debug
|
||
debug :
|
||
> @echo "STATIC_ADOC_FILES=$(STATIC_ADOC_FILES)"
|
||
> @echo "GENERATED_ADOC_FILES=$(GENERATED_ADOC_FILES)"
|
||
> @echo "ADOC_FILES=$(ADOC_FILES)"
|
||
|
||
.PHONY: all
|
||
all : html pdf
|
||
|
||
.PHONY: html
|
||
html : $(HTML_FILE)
|
||
|
||
.PHONY: pdf
|
||
pdf : $(PDF_FILE)
|
||
|
||
# Files with the "adoc0" extension contain code that must be executed and included in order to generate asciidoc files.
|
||
# My "run-code-inline" script is available at https://github.com/mhwombat/bin/blob/master/run-code-inline.
|
||
# We want to treat any paths in commands as relative to the adoc0 file, so we cd to its directory.
|
||
# The "dir" and "notdir" functions extract the directory and base filename from a path, respectively.
|
||
%-generated.adoc : %.adoc0
|
||
> cd $(dir $@); run-code-inline < $(notdir $<) 2>&1 | tee $(notdir $@)
|
||
|
||
$(HTML_FILE) : $(ADOC_FILES)
|
||
> asciidoctor -b html5 -d book $(ADOC_ATTRIBUTES) $(ADOC_HTML_ATTRIBUTES) -o $@ $(MAIN_ADOC_FILE)
|
||
|
||
$(PDF_FILE) : $(ADOC_FILES)
|
||
> asciidoctor-pdf -d book $(ADOC_ATTRIBUTES) $(ADOC_PDF_ATTRIBUTES) -o $@ $(MAIN_ADOC_FILE)
|
||
|
||
.PHONY: clean
|
||
clean :
|
||
> rm -rf $(HTML_FILE) $(PDF_FILE)
|
||
> find source -name '*-generated.adoc' -delete
|