diff --git a/build_tools/build_documentation.sh b/build_tools/build_documentation.sh new file mode 100755 index 000000000..232f3469e --- /dev/null +++ b/build_tools/build_documentation.sh @@ -0,0 +1,95 @@ +#!/bin/sh + +# This script is run as part of the build process +# It looks for doc_src, and then builds documentation out of it +# into either help_doc or $BUILT_PRODUCTS_DIR (if set) + +# If running from Xcode, the fish directory is in SRCROOT; +# otherwise assume it's the current directory +FISHDIR=`pwd` +if test -n "$SRCROOT"; then + FISHDIR="$SRCROOT" +fi + +# Make sure doc_src is found +if test ! -d "${FISHDIR}/doc_src"; then + echo >&2 "doc_src not found in '${FISHDIR}'" + exit 1 +fi + +# Make sure doxygen is found +DOXYGENPATH=`command -v doxygen` +if test -z "$DOXYGENPATH" ; then + for i in /usr/local/bin/doxygen /opt/bin/doxygen; do + if test -f "$i"; then + DOXYGENPATH="$i" + break + fi + done +fi + +if test -z "$DOXYGENPATH"; then + echo >&2 "doxygen is not installed, so documentation will not be built." + exit 0 +fi + +# Determine where our output should go +OUTPUTDIR="${FISHDIR}/help_doc" +if test -n "$BUILT_PRODUCTS_DIR"; then + OUTPUTDIR="$BUILT_PRODUCTS_DIR" +fi +mkdir -p "${OUTPUTDIR}" + + +# Make a temporary directory +TMPLOC=`mktemp -d -t fish_doc_build` || { echo >&2 "Could not build documentation because mktemp failed"; exit 1; } + +# Copy stuff to the temp directory +for i in "$FISHDIR"/doc_src/*.txt; do + DOXYFILE=$TMPLOC/`basename $i .txt`.doxygen + echo "/** \page" `basename $i .txt` >$DOXYFILE; + cat $i >>$DOXYFILE; + echo "*/" >>$DOXYFILE; +done + +# Make some extra stuff to pass to doxygen +# Input is kept as . because we cd to the input directory beforehand +# This prevents doxygen from generating "documentation" for intermediate directories +read -d '' DOXYPARAMS <