#!/bin/sh # Copyright Anton Melser 2004, this documentation script is BSD-type licenced software. See the generated docs for further information. #This script should make everything nicely #Needless to say, my scripting sux! MAKEPDF="no" MAKEHTML="no" MAKEAPI="no" DOCHOMEHTML="dochome.html" CUSTOMSINGLE="doc/gdocs/customsingle.xsl" CUSTOMMULTI="doc/gdocs/custommulti.xsl" debug() { echo "PATH is: $PATH" echo "applications: doxygen, dot, htmldoc, xsltproc, xmlto" echo "doxygen: `which doxygen`" echo "dot: `which dot`" echo "htmldoc: `which htmldoc`" echo "xsltproc: `which xsltproc`" echo "xmlto: `which xmlto`" } #Check if doxygen is installed capi() { if [ -z $(which doxygen 2> /dev/null) ] then return 1 else return 0 fi; } #Check if xsltproc is installed html() { if [ -z $(which xsltproc 2> /dev/null) ] then return 1 else return 0 fi; } #Check if htmldoc is installed pdf() { if [ -z $(which htmldoc 2> /dev/null) ] then html let "htmlret = $? + 1" return $htmlret else html let "htmlret = $? + 0" return $htmlret fi; } #Check if all required apps are installed all() { myret=0 capi let "myret = $?" html let "myret = $? + myret" pdf let "myret = $? + myret" return $myret; } #General help messages to be outputted whenever something unexpected is put on the command line. helpinfo () { echo "" echo "Usage - You may only use the options:" echo " -h (for html of the parameters passed)" echo " -p (for pdf of the parameters passed)" echo " -a (for both/all)" echo "Or a combination to build the desired documentation. If you want to build anything but the api " echo "then you must specify one or else the script will do nothing." echo "" echo "Respecting case, you must specify one or more of the following parameters:" echo "" echo " general - for a general, non-technical introduction to the G System Framework." echo " technical - for a technical introduction to the G System Framework." echo " tutorial - for a set of tutorials on programming with the G System." echo " featureplan - for details of the current and planned features of the components of the system" echo " philocorner - for a set of philosophical articles and writings pertanent to the project." echo " all - to build all the above sets of documentation." echo " api - to build the api documentation (not included in all)" echo " api may be called without options as they have no effect anyway." echo "" echo "e.g., $ makedocs -h general technical" echo "Will build the html docs for the general and technical introductions" echo "" echo " $ makedocs -a philocorner api" echo "Will build both the pdf and html for philocorner and will also build the api documentation." echo "" echo "All the documentation created can be accessed via doc/dochome.html" echo "" echo "Please report any bugs you find at the G System forum or mailing list. See www.g-system.at/index.php" echo "for more details." echo ""; } #Check whether docbook is installed and we can get the DTD files locally or we need to get them from the web localinstall () { if [ -f /etc/xml/docbook ] then return 0 else return 1 fi; } #xmlto also uses local xsl files if they exist. Not a pretty solution to the actual problem, but oh well! hasxmlto () { if [ -z $(which xmlto 2> /dev/null) ] then return 1 else return 0 fi; } #function name says it all endmessage () { echo "" echo "You will find the introductions, articles and tutorial documentation in the html and/or pdf " echo "directories of the respective subdirectories of doc/gdocs and the api docs in doc/gdocs/api-reference." echo "" echo "The html flag produces both a single page and multile page html versions." echo "The single page file is called nameofdoc.html, and the index for the multi version is index.html" echo "" echo "You can easily navigate all the documentation by loading doc/gdocs/dochome.html" echo "into your browser. This script automatically adds the entries you created." echo "" echo "Please report any bugs you find at the G System forum or mailing list." echo "See www.g-system.at/index.php for more details." echo "" } #Writes the start of the dochome.html file startdochome () { echo "Documentation Home" > $DOCHOMEHTML echo "" >> $DOCHOMEHTML echo "

G System Documentation Home

" >> $DOCHOMEHTML echo "

Here are links to the documents that were created with the makedocs script. If you want to access other documentation then you will have to run the script again in the top directory of the source distribution, this time passing the options and parameters you want. Enter $ ./makedocs -help for more information.

" >> $DOCHOMEHTML echo "" >> $DOCHOMEHTML if [ "$MAKEHTML" = "yes" ] then echo "" >> $DOCHOMEHTML fi if [ "$MAKEPDF" = "yes" ] then echo "" >> $DOCHOMEHTML fi echo "" >> $DOCHOMEHTML } enddochome () { #Make the licence agreement and print to dochome.html xsltproc -o doc/gdocs/commonDocbook/html/fdl.html $CUSTOMSINGLE doc/gdocs/commonDocbook/fdlwrapper.docbook xsltproc -o doc/gdocs/commonDocbook/html/BSD.html $CUSTOMSINGLE doc/gdocs/commonDocbook/BSDLicence.docbook echo "" >> $DOCHOMEHTML echo "" >> $DOCHOMEHTML echo "

G System documentation links

Multifile htmlSingle file htmlpdf files
GNU Free Doc LicenceBSD Code Licence
GNU Free Documentation LicenceBSD Code Licence
" >> $DOCHOMEHTML echo "" >> $DOCHOMEHTML } fixPaths() { if [ -f dochome.html ] then sed 's/\/doc\/gdocs//g' dochome.html > doc/gdocs/dochome.html fi if [ -f doc/gdocs/dochome.html ] then rm -f dochome.html fi } # uncomment this to see some debug output (PATH and available applications) #debug #nothing at all passed on the CL if [ $# -eq 0 ] then helpinfo exit 1 fi #only when api is the only thing called can there be no options passed if [ $# = 1 ] && [ $1 != "api" ] then helpinfo exit 1 fi #Get the options and set flags, checking to make sure that the necessary apps are installed while getopts ":hpa" Option do case $Option in h ) html if [ $? -gt 0 ] then echo "" echo "You must have the programme \"xsltproc\" installed to create the html docs" echo "" exit 2 else MAKEHTML="yes" fi;; p ) pdf if [ $? -gt 0 ] then echo "" echo "You must have \"htmldoc\" AND \"xsltproc\" installed to make the .pdfs" echo "" exit 2 else MAKEPDF="yes" fi;; a ) all if [ $? -gt 0 ] then echo "" echo "You must have \"htmldoc\" AND \"xsltproc\" installed to make all the docs" echo "" exit 2 else MAKEPDF="yes" MAKEHTML="yes" fi;; * ) helpinfo exit 2;; esac done shift $(($OPTIND - 1)) MYCWD="." #If only options and no parameters were passed, else if [ $# -eq 0 ] then helpinfo exit 4 else #create a list of all the documents the user wants html and/or pdf for until [ -z "$1" ] # Until all parameters used up... do case $1 in api ) capi if [ $? -gt 0 ] then echo "" echo "You must have \"doxygen\" installed to make the code api reference" echo "" exit 2 else MAKEAPI="yes" fi;; general ) doclist=$(echo $doclist $MYCWD/doc/gdocs/general/general.docbook);; philocorner ) doclist=$(echo $doclist $MYCWD/doc/gdocs/philocorner/philocorner.docbook);; technical ) doclist=$(echo $doclist $MYCWD/doc/gdocs/technical/technical.docbook);; tutorial ) doclist=$(echo $doclist $MYCWD/doc/gdocs/tutorial/tutorial.docbook);; featureplan ) doclist=$(echo $doclist $MYCWD/doc/gdocs/featureplan/featureplan.docbook);; all ) doclist=$(echo $MYCWD/doc/gdocs/general/general.docbook $MYCWD/doc/gdocs/philocorner/philocorner.docbook $MYCWD/doc/gdocs/technical/technical.docbook $MYCWD/doc/gdocs/tutorial/tutorial.docbook $MYCWD/doc/gdocs/featureplan/featureplan.docbook);; * ) helpinfo exit 4;; esac shift done fi echo "Making the documentation for the G System" startdochome if [ "$MAKEHTML" = "yes" ] || [ "$MAKEPDF" = "yes" ] then for docset in $doclist do #Assign base variables for the pass working=$(dirname $docset) echo $working filname=$(basename $docset) mybase=${filname%%.*} if [ ! -d $working/html ] then mkdir $working/html fi echo "" >> $DOCHOMEHTML #checks for a local install of docbook and then for the presence of xmlto #localinstall #go=$? #hasxmlto #let "go = go + $?" #Temporarily disabled, cos I don't think it makes a difference as xsltproc uses the schema anyway. go=2 #Make chunked html docs if [ "$MAKEHTML" = "yes" ] then echo echo "Making the html docs in " $working/html echo #Either use local install of docbook or go net if [ $go -eq 0 ] then $(which xmlto) html -o $working/html -x $CUSTOMMULTI $docset else xsltproc -o $working/html/ $CUSTOMMULTI $docset fi #$(which xmlto) html -o $working/html $docset #Add the relevant entries in dochome.html echo "$mybase$mybase" >> $DOCHOMEHTML #Copy all png images to the destination directory cp $working/*.png $working/html fi #Either use local install of docbook or go net to make non-chunked html docs if [ $go -eq 0 ] then $(which xmlto) html-nochunks -o $working/html -x $CUSTOMMULTI $docset else xsltproc -o $working/html/$mybase.html $CUSTOMSINGLE $docset fi #If pdfs are desired then make them - I know, I know! I couldn't get xsltproc working for pdfs so this is an ugly hack if [ ! -d $working/pdf ] && [ "$MAKEPDF" = "yes" ] then mkdir $working/pdf fi if [ "$MAKEPDF" = "yes" ] then echo echo "Making the pdf docs in " $working/pdf echo $(which htmldoc) -f $working/pdf/$mybase.pdf $working/html/$mybase.html echo "$mybase" >> $DOCHOMEHTML fi #Remove the non-chunked html used to make the pdfs, cos we don't want them if [ "$MAKEHTML" = "no" ] then rm -rf $working/html fi echo "" >> $DOCHOMEHTML done fi #Make the API docs if [ "$MAKEAPI" = "yes" ] then echo "" echo "Making API documentation for the G System" echo "" doxygen echo "API Documentation" >> $DOCHOMEHTML echo "API documentation" >> $DOCHOMEHTML echo "" echo "Finished making the API docs." echo "" fi enddochome endmessage fixPaths exit 0