2012-12-28 09:31:13 +08:00
#!/bin/sh
# This script is run as part of the build process
2013-01-04 07:17:48 +08:00
if test $# -eq 0
then
# Use fish's defaults
DOXYFILE = Doxyfile.help
INPUTDIR = doc_src
OUTPUTDIR = share
echo " Using defaults: $0 ${ DOXYFILE } ${ INPUTDIR } ${ OUTPUTDIR } "
elif test $# -eq 3
then
DOXYFILE = " $1 "
INPUTDIR = " $2 "
OUTPUTDIR = " $3 "
else
echo " Usage: $0 doxygen_file input_directory output_directory "
exit 1
2012-12-28 09:31:13 +08:00
fi
2013-01-04 07:17:48 +08:00
# Helper function to turn a relative path into an absolute path
resolve_path( )
{
D = ` command dirname " $1 " `
B = ` command basename " $1 " `
echo " `cd \" $D \" 2>/dev/null && pwd || echo \" $D \"`/ $B "
}
# Expand relative paths
DOXYFILE = ` resolve_path " $DOXYFILE " `
INPUTDIR = ` resolve_path " $INPUTDIR " `
OUTPUTDIR = ` resolve_path " $OUTPUTDIR " `
2013-01-04 07:26:29 +08:00
echo " doxygen file: $DOXYFILE "
echo " input directory: $INPUTDIR "
echo " output directory: $OUTPUTDIR "
2013-01-04 07:17:48 +08:00
# Make sure INPUTDIR is found
if test ! -d " $INPUTDIR " ; then
echo >& 2 " Could not find input directory ' ${ INPUTDIR } ' "
2012-12-28 09:31:13 +08:00
exit 1
fi
# Make sure doxygen is found
DOXYGENPATH = ` command -v doxygen`
if test -z " $DOXYGENPATH " ; then
2013-01-08 11:29:33 +08:00
for i in /usr/local/bin/doxygen /opt/bin/doxygen /Applications/Doxygen.app/Contents/Resources/doxygen ~/Applications/Doxygen.app/Contents/Resources/doxygen ; do
2012-12-28 09:31:13 +08:00
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
2013-01-04 07:17:48 +08:00
if ! mkdir -p " ${ OUTPUTDIR } " ; then
echo " Could not create output directory ' ${ OUTPUTDIR } ' "
2012-12-28 09:31:13 +08:00
fi
# Make a temporary directory
2012-12-28 13:12:22 +08:00
TMPLOC = ` mktemp -d -t fish_doc_build_XXXXXX` || { echo >& 2 "Could not build documentation because mktemp failed" ; exit 1; }
2012-12-28 09:31:13 +08:00
# Copy stuff to the temp directory
2013-01-04 07:17:48 +08:00
for i in " $INPUTDIR " /*.txt; do
INPUTFILE = $TMPLOC /` basename $i .txt` .doxygen
echo "/** \page" ` basename $i .txt` > $INPUTFILE
cat $i >>$INPUTFILE
echo "*/" >>$INPUTFILE
2012-12-28 09:31:13 +08:00
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
2012-12-28 13:39:11 +08:00
DOXYPARAMS = $( cat <<EOF
2012-12-28 09:31:13 +08:00
PROJECT_NUMBER = 2.0.0
INPUT = .
OUTPUT_DIRECTORY = $OUTPUTDIR
QUIET = YES
EOF
2012-12-28 13:39:11 +08:00
) ;
2012-12-28 09:31:13 +08:00
# echo "$DOXYPARAMS"
# Clear out the output directory first
find " ${ OUTPUTDIR } " -name "*.1" -delete
# Run doxygen
cd " $TMPLOC "
2013-01-04 07:17:48 +08:00
( cat " ${ DOXYFILE } " ; echo " $DOXYPARAMS " ; ) | " $DOXYGENPATH " -
2012-12-28 09:31:13 +08:00
# Remember errors
RESULT = $?
2012-12-28 13:39:11 +08:00
cd " ${ OUTPUTDIR } /man/man1/ "
if test " $RESULT " = 0 ; then
2012-12-28 09:31:13 +08:00
# Postprocess the files
2013-01-04 07:17:48 +08:00
for i in " $INPUTDIR " /*.txt; do
2012-12-28 13:39:11 +08:00
# It would be nice to use -i here for edit in place, but that is not portable
2012-12-28 09:31:13 +08:00
CMD_NAME = ` basename " $i " .txt` ;
2012-12-28 13:39:11 +08:00
sed -e "s/\(.\)\\.SH/\1/" -e " s/ $CMD_NAME *\\\\- *\"\(.*\)\"/\1/ " " ${ CMD_NAME } .1 " > " ${ CMD_NAME } .1.tmp "
mv " ${ CMD_NAME } .1.tmp " " ${ CMD_NAME } .1 "
2012-12-28 09:31:13 +08:00
done
fi
# Destroy TMPLOC
echo " Cleaning up ' $TMPLOC ' "
2012-12-28 12:33:13 +08:00
rm -Rf " $TMPLOC "
2012-12-28 09:31:13 +08:00
2012-12-28 13:40:23 +08:00
if test " $RESULT " = 0; then
2012-12-28 09:31:13 +08:00
# Tell the user what we did
echo " Output man pages into ' ${ OUTPUTDIR } ' "
else
echo "Doxygen failed. See the output log for details."
fi
exit $RESULT