aboutsummaryrefslogtreecommitdiff
path: root/doc/manual/process-includes.sh
diff options
context:
space:
mode:
Diffstat (limited to 'doc/manual/process-includes.sh')
-rwxr-xr-xdoc/manual/process-includes.sh32
1 files changed, 26 insertions, 6 deletions
diff --git a/doc/manual/process-includes.sh b/doc/manual/process-includes.sh
index 6d75710ad..51ac67acb 100755
--- a/doc/manual/process-includes.sh
+++ b/doc/manual/process-includes.sh
@@ -2,11 +2,31 @@
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' "$1" || true) | while read -r line; do
- filename="$(dirname "$1")/$(printf "$line" | sed 's/{{#include \(.*\)}}/\1/')"
- test -f "$filename" || ( echo "#include-d file '$filename' does not exist." >&2; exit 1; )
- matchline="$(printf "$line" | sed 's|/|\\/|g')"
- sed -i "/$matchline/r $filename" "$2"
- sed -i "s/$matchline//" "$2"
+(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