adecb00f5a
We were using Pandoc’s Markdown parser. This is non-standard and might cause issues when we finally switch to some other tool. Since RFC 0072 agreed on CommonMark, let’s switch to that. We will use some extensions to make the limited syntax bearable but these are official so they should be more portable.
109 lines
3.5 KiB
Makefile
109 lines
3.5 KiB
Makefile
MD_TARGETS=$(addsuffix .xml, $(basename $(shell find . -type f -regex '.*\.md$$' -not -name README.md)))
|
|
|
|
PANDOC ?= pandoc
|
|
|
|
pandoc_media_dir = media
|
|
# TODO: Remove raw-attribute when we can get rid of DocBook altogether.
|
|
pandoc_commonmark_enabled_extensions = +attributes+fenced_divs+footnotes+bracketed_spans+definition_lists+pipe_tables+raw_attribute
|
|
pandoc_flags = --extract-media=$(pandoc_media_dir) \
|
|
--lua-filter=$(PANDOC_LUA_FILTERS_DIR)/diagram-generator.lua \
|
|
-f commonmark$(pandoc_commonmark_enabled_extensions)+smart
|
|
|
|
.PHONY: all
|
|
all: validate format out/html/index.html out/epub/manual.epub
|
|
|
|
.PHONY: debug
|
|
debug:
|
|
nix-shell --run "xmloscopy --docbook5 ./manual.xml ./manual-full.xml"
|
|
|
|
.PHONY: format
|
|
format: doc-support/result
|
|
find . -iname '*.xml' -type f | while read f; do \
|
|
echo $$f ;\
|
|
xmlformat --config-file "doc-support/result/xmlformat.conf" -i $$f ;\
|
|
done
|
|
|
|
.PHONY: fix-misc-xml
|
|
fix-misc-xml:
|
|
find . -iname '*.xml' -type f \
|
|
-exec ../nixos/doc/varlistentry-fixer.rb {} ';'
|
|
|
|
.PHONY: clean
|
|
clean:
|
|
rm -f ${MD_TARGETS} doc-support/result .version manual-full.xml functions/library/locations.xml functions/library/generated
|
|
rm -rf ./out/ ./highlightjs
|
|
|
|
.PHONY: validate
|
|
validate: manual-full.xml doc-support/result
|
|
jing doc-support/result/docbook.rng manual-full.xml
|
|
|
|
out/html/index.html: doc-support/result manual-full.xml style.css highlightjs
|
|
mkdir -p out/html
|
|
xsltproc \
|
|
--nonet --xinclude \
|
|
--output $@ \
|
|
doc-support/result/xhtml.xsl \
|
|
./manual-full.xml
|
|
|
|
mkdir -p out/html/highlightjs/
|
|
cp -r highlightjs out/html/
|
|
|
|
cp -r $(pandoc_media_dir) out/html/
|
|
cp ./overrides.css out/html/
|
|
cp ./style.css out/html/style.css
|
|
|
|
mkdir -p out/html/images/callouts
|
|
cp doc-support/result/xsl/docbook/images/callouts/*.svg out/html/images/callouts/
|
|
chmod u+w -R out/html/
|
|
|
|
out/epub/manual.epub: manual-full.xml
|
|
mkdir -p out/epub/scratch
|
|
xsltproc --nonet \
|
|
--output out/epub/scratch/ \
|
|
doc-support/result/epub.xsl \
|
|
./manual-full.xml
|
|
|
|
cp -r $(pandoc_media_dir) out/epub/scratch/OEBPS
|
|
cp ./overrides.css out/epub/scratch/OEBPS
|
|
cp ./style.css out/epub/scratch/OEBPS
|
|
mkdir -p out/epub/scratch/OEBPS/images/callouts/
|
|
cp doc-support/result/xsl/docbook/images/callouts/*.svg out/epub/scratch/OEBPS/images/callouts/
|
|
echo "application/epub+zip" > mimetype
|
|
zip -0Xq "out/epub/manual.epub" mimetype
|
|
rm mimetype
|
|
cd "out/epub/scratch/" && zip -Xr9D "../manual.epub" *
|
|
rm -rf "out/epub/scratch/"
|
|
|
|
highlightjs: doc-support/result
|
|
mkdir -p highlightjs
|
|
cp -r doc-support/result/highlightjs/highlight.pack.js highlightjs/
|
|
cp -r doc-support/result/highlightjs/LICENSE highlightjs/
|
|
cp -r doc-support/result/highlightjs/mono-blue.css highlightjs/
|
|
cp -r doc-support/result/highlightjs/loader.js highlightjs/
|
|
|
|
|
|
manual-full.xml: ${MD_TARGETS} .version functions/library/locations.xml functions/library/generated *.xml **/*.xml **/**/*.xml
|
|
xmllint --nonet --xinclude --noxincludenode manual.xml --output manual-full.xml
|
|
|
|
.version: doc-support/result
|
|
ln -rfs ./doc-support/result/version .version
|
|
|
|
doc-support/result: doc-support/default.nix
|
|
(cd doc-support; nix-build)
|
|
|
|
functions/library/locations.xml: doc-support/result
|
|
ln -rfs ./doc-support/result/function-locations.xml functions/library/locations.xml
|
|
|
|
functions/library/generated: doc-support/result
|
|
ln -rfs ./doc-support/result/function-docs functions/library/generated
|
|
|
|
%.section.xml: %.section.md
|
|
$(PANDOC) $^ -t docbook \
|
|
$(pandoc_flags) \
|
|
| cat > $@
|
|
|
|
%.chapter.xml: %.chapter.md
|
|
$(PANDOC) $^ -t docbook \
|
|
--top-level-division=chapter \
|
|
$(pandoc_flags) \
|
|
| cat > $@
|