150 lines
4 KiB
Bash
Executable file
150 lines
4 KiB
Bash
Executable file
#!/bin/sh
|
||
|
||
# See cat << HEREDOC for file description.
|
||
|
||
|
||
# Set this to the complete path of the tidy for which you want to generate
|
||
# documentation. Relative path is okay. You shouldn't have to change this
|
||
# too often if your compiler always puts tidy in the same place.
|
||
|
||
TIDY_PATH="../build/cmake/tidy" # Build directory.
|
||
|
||
TIDY_VERSION=`head -n 1 ../version.txt` # In project root directory.
|
||
|
||
|
||
cat << HEREDOC
|
||
|
||
Build 'tidy.1', which is a man page suitable for installation
|
||
in all Unix-like operating systems. This script will build
|
||
it, but not install it.
|
||
|
||
Build 'quickref.html'. This is distributed with the
|
||
the Tidy source code and also used on Tidy's website.
|
||
Be sure to distribute it with 'quickref.css' as well.
|
||
|
||
Build the 'tidylib_api' directory, which contains a website
|
||
with the documentation for TidyLib’s headers.
|
||
|
||
These files will be built into '{current_dir}/temp'.
|
||
|
||
HEREDOC
|
||
|
||
|
||
# Output and flags' declarations.
|
||
DOXY_CFG="./doxygen.cfg"
|
||
OUTP_DIR="./temp"
|
||
BUILD_XSLT=1
|
||
BUILD_API=1
|
||
|
||
|
||
##
|
||
# Ensure the output dir exists.
|
||
##
|
||
if [ ! -d "$OUTP_DIR" ]; then
|
||
mkdir $OUTP_DIR
|
||
fi
|
||
|
||
|
||
##
|
||
# Preflight
|
||
##
|
||
|
||
# Check for a valid tidy.
|
||
if [ ! -x "$TIDY_PATH" ]; then
|
||
BUILD_XSLT=0
|
||
echo "- '$TIDY_PATH' not found. You should set TIDY_PATH in this script."
|
||
fi
|
||
|
||
# Check for xsltproc dependency.
|
||
hash xsltproc 2>/dev/null || { echo "- xsltproc not found. You require an XSLT processor."; BUILD_XSLT=0; }
|
||
|
||
|
||
##
|
||
# Build 'quickref.html' and 'tidy.1'.
|
||
##
|
||
|
||
if [ "$BUILD_XSLT" -eq 1 ]; then
|
||
# Use the designated tidy to get its config and help.
|
||
# These temporary files will be cleaned up later.
|
||
$TIDY_PATH -xml-config > "$OUTP_DIR/tidy-config.xml"
|
||
$TIDY_PATH -xml-help > "$OUTP_DIR/tidy-help.xml"
|
||
|
||
# 'quickref.html' and 'quickref_include.html' for the Doxygen build.
|
||
xsltproc "./quickref.xsl" "$OUTP_DIR/tidy-config.xml" > "$OUTP_DIR/quickref.html"
|
||
xsltproc "./quickref.include.xsl" "$OUTP_DIR/tidy-config.xml" > ./examples/quickref_include.html
|
||
|
||
# Well, duh, we should tidy quickref.html
|
||
$TIDY_PATH -config "./tidy.cfg" -modify "$OUTP_DIR/quickref.html"
|
||
|
||
# 'tidy.1'; create a valid tidy1.xsl first by subbing CMAKE's variable.
|
||
sed "s|@TIDYCONFIG@|./tidy-config.xml|g" < ./tidy1.xsl.in > "$OUTP_DIR/tidy1.xsl"
|
||
xsltproc "$OUTP_DIR/tidy1.xsl" "$OUTP_DIR/tidy-help.xml" > "$OUTP_DIR/tidy.1"
|
||
|
||
# Cleanup
|
||
rm "$OUTP_DIR/tidy-config.xml"
|
||
rm "$OUTP_DIR/tidy-help.xml"
|
||
rm "$OUTP_DIR/tidy1.xsl"
|
||
|
||
echo "'quickref.html' and 'tidy.1' have been built.\n"
|
||
else
|
||
echo "* tidy.1 was skipped because not all dependencies were satisfied."
|
||
fi
|
||
|
||
|
||
##
|
||
# Preflight
|
||
##
|
||
|
||
# Check for the doxygen.cfg file.
|
||
if [ ! -f "$DOXY_CFG" ]; then
|
||
BUILD_API=0
|
||
echo "- 'DOXY_CFG' not found. It is required to configure doxygen."
|
||
fi
|
||
|
||
# Check for doxygen dependency.
|
||
hash doxygen 2>/dev/null || { echo "- doxygen not found. This script requires doxygen."; BUILD_XSLT=0; }
|
||
|
||
|
||
##
|
||
# Build the doxygen project.
|
||
##
|
||
|
||
if [ "$BUILD_API" -eq 1 ]; then
|
||
echo "The following is doxygen's stderr output. It doesn't indicate errors with this script:\n"
|
||
|
||
# echo the output of tidy5 --help so we can include
|
||
$TIDY_PATH -h > "./examples/tidy5.help.txt"
|
||
$TIDY_PATH -help-config > "./examples/tidy5.config.txt"
|
||
|
||
|
||
## copy license file to examples for includsing
|
||
cp ../README/LICENSE.md ./examples/
|
||
|
||
## this lot
|
||
# - echoes and catches output of the doxygen config
|
||
# - overwrites some vars but appending some to config at end
|
||
# - which are then passed to doxygen as stdin (instead of the path to a config.file)
|
||
( cat "$DOXY_CFG"; \
|
||
echo "PROJECT_NUMBER=$TIDY_VERSION"; \
|
||
echo "GENERATE_TAGFILE=$OUTP_DIR/tidylib_api/tidy.tags"; \
|
||
echo "HTML_EXTRA_FILES= ./examples/tidy5.help.txt ./examples/tidy5.config.txt"; ) \
|
||
| doxygen - > /dev/null
|
||
|
||
# cleanup
|
||
rm "./examples/tidy5.help.txt"
|
||
rm "./examples/tidy5.config.txt"
|
||
rm "./examples/LICENSE.md"
|
||
|
||
echo "\nTidyLib API documentation has been built."
|
||
else
|
||
echo "* $OUTP_DIR/tidylib_api/ was skipped because not all dependencies were satisfied."
|
||
fi
|
||
|
||
|
||
##
|
||
# Done
|
||
##
|
||
|
||
echo "\nDone.\n"
|
||
|