diff options
Diffstat (limited to 'doc/manual/process-includes.sh')
-rwxr-xr-x | doc/manual/process-includes.sh | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/doc/manual/process-includes.sh b/doc/manual/process-includes.sh new file mode 100755 index 000000000..51ac67acb --- /dev/null +++ b/doc/manual/process-includes.sh @@ -0,0 +1,32 @@ +#!/bin/sh + +set -euo pipefail + +infile="$1" +outfile="$2" +shift 2 + +# set a search path for includes. the old makefile-based system splorked +# everything into the source tree and was thus able to not have a search +# path, but the meson system generates intermediate files into dedicated +# directories separate from the source. we still retain the implicit old +# behavior for now as the base search path, once meson is the default we +# can revisit this and remove the implicit search path entry. it's fine. +set -- "$(dirname "$infile")" "$@" + +# re-implement mdBook's include directive to make it usable for terminal output and for proper @docroot@ substitution +(grep '{{#include' "$infile" || true) | while read -r line; do + found=false + include="$(printf "$line" | sed 's/{{#include \(.*\)}}/\1/')" + for path in "$@"; do + filename="$path/$include" + if [ -e "$filename" ]; then + found=true + matchline="$(printf "$line" | sed 's|/|\\/|g')" + sed -i "/$matchline/r $filename" "$outfile" + sed -i "s/$matchline//" "$outfile" + break + fi + done + $found || ( echo "#include-d file '$filename' does not exist." >&2; exit 1; ) +done |