mirror of
https://codeberg.org/mhwombat/nix-book.git
synced 2025-12-27 00:34:58 +08:00
69 lines
2.5 KiB
Makefile
69 lines
2.5 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
|
||
TIME != date +"%T %Z"
|
||
|
||
MAIN_ADOC_FILE = source/book.adoc
|
||
HTML_FILE = index.html
|
||
PDF_FILE = wombats-book-of-nix.pdf
|
||
EPUB_FILE = wombats-book-of-nix.epub
|
||
|
||
ADOC_ATTR_DATE = -a docdate="$(DATE)" -a doctime="$(TIME)"
|
||
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 -a imagesdir=images
|
||
ADOC_PDF_ATTRIBUTES = -a pdf-themesdir=themes -a pdf-theme=pdf -a imagesdir=../images
|
||
ADOC_EPUB_ATTRIBUTES = $(ADOC_HTML_ATTRIBUTES)
|
||
|
||
.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)
|
||
|
||
.PHONY: epub
|
||
epub : $(EPUB_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 $@)
|
||
> sed -i 's/\x0d\x1b.\x4b//g' $@
|
||
# The last line fixes some weird characters generated by some nix commands
|
||
|
||
$(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)
|
||
|
||
$(EPUB_FILE) : $(ADOC_FILES)
|
||
> asciidoctor-epub3 -d book $(ADOC_ATTRIBUTES) $(ADOC_EPUB_ATTRIBUTES) -o $@ $(MAIN_ADOC_FILE)
|
||
|
||
.PHONY: clean
|
||
clean :
|
||
> rm -rf $(HTML_FILE) $(PDF_FILE) $(EPUB_FILE)
|
||
> find source -name '*-generated.adoc' -delete
|
||
|
||
.PHONY: spellcheck
|
||
spellcheck :
|
||
> cat index.html | aspell --lang=en_IE --encoding=utf-8 --add-extra-dicts=./wordlist --mode=html list | sort -u
|
||
|
||
# dictionary/en_book.rws : wordlist
|
||
# > aspell --lang=en create master ./$@ < $<
|