mirror of
git://git.sv.gnu.org/coreutils.git
synced 2026-02-13 10:52:09 +02:00
Previously the html-local make rule only worked for `make html`. Instead add support for `make doc/coreutils.html` or `make web-manual` through the use of a makeinfo wrapper. * doc/local.mk: Move post processing from here to ... * build-aux/makeinfo-wrapper.sh: ... here. * cfg.mk: Ensure our wrapper is called with MAKEINFO. Also pass --no-node-files so redirection html files are not created for each anchor.
42 lines
1.1 KiB
Bash
Executable File
42 lines
1.1 KiB
Bash
Executable File
#!/bin/sh
|
|
# makeinfo wrapper that post-processes HTML output to replace _002d with -,
|
|
# only on lines containing "option", corresponding to our @optAnchor macro.
|
|
# Note texi uses "-" in anchors for spaces, hence why it escapes - with _002d.
|
|
|
|
makeinfo "$@" || exit
|
|
|
|
process_html()
|
|
{
|
|
sed_anchor_cleanup=\
|
|
'/id=.*_002doption/{ s/id="\([^"]*\)_002doption/id="\1/g; s/_002d/-/g; }'
|
|
|
|
sed -e "$sed_anchor_cleanup" "$1" > "$1.t" &&
|
|
mv "$1.t" "$1"
|
|
}
|
|
|
|
case " $* " in
|
|
*" --html"*)
|
|
# Find the output file/directory
|
|
output=""
|
|
next_is_output=false
|
|
for arg in "$@"; do
|
|
if [ "$next_is_output" = true ]; then
|
|
output="$arg"
|
|
break
|
|
fi
|
|
case "$arg" in
|
|
-o) next_is_output=true ;;
|
|
--output=*) output="${arg#--output=}" ;;
|
|
esac
|
|
done
|
|
|
|
# Process the output file/directory
|
|
if test -n "$output"; then
|
|
test -f "$output" && NAMES='*' || NAMES='*.html'
|
|
find "$output" -name "$NAMES" -type f |
|
|
# dash doesn't support read -d '' yet.
|
|
while IFS= read -r htmlfile; do process_html "$htmlfile"; done
|
|
fi
|
|
;;
|
|
esac
|