summaryrefslogtreecommitdiffstats
path: root/doc/sphinx-wrapper.sh
blob: 5569638a538b8e201ee1e2b9025770d554ff7f46 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#!/bin/sh

OUTPUT_HOME="$1"
MAN_OUTPUTS="$2"
SPHINXBUILD="$3"
shift 3

"${SPHINXBUILD}" "$@" || exit $?

SPHINXBUILD_MAJOR="$("${SPHINXBUILD}" --version | cut -d' ' -f2 | cut -d'.' -f1)"
if [ "${SPHINXBUILD_MAJOR}" -ge 4 ]; then
	exit 0
fi

# sphinx-build 3.x outputs man pages to "8" directory instead of expected "man8".
# The following block checks for "man8" (and other output paths in ${MAN_OUTPUTS})
# and, if that is missing, but "8" dir exists instead, it renames "8" to "man8"
# and creates a symlink named "8" that points to "man8", so that anyone is happy
# during the rest of current build and subsequent builds as well.

for MAN_OUTPUT in ${MAN_OUTPUTS}; do
	PATH_TARGET="${OUTPUT_HOME}/${MAN_OUTPUT}"
	PATH_ACTUAL="${OUTPUT_HOME}/${MAN_OUTPUT#man}"
	if [ -d "${PATH_ACTUAL}" -a ! -L "${PATH_ACTUAL}" ]; then
		rm -rf "${PATH_TARGET}"
		mv "${PATH_ACTUAL}" "${PATH_TARGET}"
		ln -s "${MAN_OUTPUT}" "${PATH_ACTUAL}"
	fi
done