#!/bin/sh # # Author: Pekka Riikonen # # Copyright (C) GNU GPL 2001 - 2002 Pekka Riikonen # # SILC Toolkit Reference Manual documentation script. This will automatically # generate documentation from the source tree. This will require the # robodoc compiled in util/robodoc and php utility installed in your system. # # This will tarverse the given directory and all subdirectories for the # SILC style header files. All header files starting with prefix `silc' # will be checked. For example, silcpkcs.h. # # Usage: ./sildoc # # The is the directory where this starts checking for # the headers and will traverse all subdirectories. The is the directory to where the documentation is generated. # # Arguments checking if [ $# -lt "4" ]; then echo "Usage: ./silcdoc " echo "Supported types: HTML PS" # echo "Supported types: HTML, ASCII, LATEX or RTF" exit 1 fi TYPE=$1 SRC=$2 DST=$3 ROBO=$4 # Get all headers in the source directory headers=`find $SRC -name "silc*.h"` # # PS documentation (from LATEX) # if [ "$TYPE" = "PS" ]; then TYPE="LATEX" rm -rf /tmp/silcdoc.tex mkdir /tmp/silcdoc.tex cp $headers /tmp/silcdoc.tex path=`pwd` cd /tmp/silcdoc.tex # Generate cross reference files headers=`find . -name "silc*.h" |cut -d/ -f2 |cut -d. -f1` touch silcdoc_xref for i in $headers do $ROBO $i.h $i.h.tex $TYPE INTERNAL GENXREF $i.h.xref echo $i.h.xref >>silcdoc_xref done # Generate the detailed documentation headers=`find . -name "silc*.h" |cut -d/ -f2 |cut -d. -f1` for i in $headers do # remove internals rm -rf $i_i.h $ROBO $i.h $i.h.tex XREF silcdoc_xref $TYPE C SORT NOSOURCE SINGLEDOC done # Generate the index $ROBO silcdoc_xref toolkit_mi INDEX $TYPE TITLE "SILC Toolkit Reference Manual" # Generate the postscript latex toolkit_mi makeindex toolkit_mi latex toolkit_mi latex toolkit_mi dvips toolkit_mi.dvi -o $DST cd $path rm -rf /tmp/silcdoc.tex exit 0 fi # # ASCII documentation # #if [ "$TYPE" = "ASCII" ]; then # #fi # # HTML documentation # if [ "$TYPE" = "HTML" ]; then rm -rf /tmp/silcdoc.html rm -rf /tmp/silcdoc_html.html mkdir /tmp/silcdoc.html mkdir /tmp/silcdoc_html.html cp $headers /tmp/silcdoc.html # Generate index template from the DIRECTORY files. The template for # the generated index template is INDEX.tmpl. dfiles=`find $SRC -name "DIRECTORY"` for i in $dfiles do # Get library name name=`grep "@LIBRARY=" $i |cut -d= -f2` fname=`grep "@FILENAME=" $i |cut -d= -f2` links=`grep "@LINK=" $i |cut -d= -f2 |cut -d: -f1` # Generate links to template file that can be included into various # places on the webpage. echo "$name
" >>$DST/index.tmpl for k in $links do n=`grep $k $i |cut -d= -f2 |cut -d: -f2` echo "
  • $n" >>$DST/$fname.links echo "    $n
    " >>$DST/index.tmpl done done # Now get the template for the link template, and generate the final index # template file temp=`find $SRC -name "INDEX.tmpl"` sed -e "/@BODY@/ r $DST/index.tmpl" -e s/@BODY@//g $temp >$DST/index.tmpl.tmp mv $DST/index.tmpl.tmp $DST/index.tmpl # Copy all HTML files to destination htmlfiles=`find $SRC -name "*.html"` for i in $htmlfiles do cp $i /tmp/silcdoc_html.html done path=`pwd` cd /tmp/silcdoc_html.html htmlfiles=`find . -name "*.html" | cut -d/ -f2` cd $path for i in $htmlfiles do # Generate the details and the layout f="/tmp/silcdoc_html.html/$i" sh gen.sh $DST gen_index.php 1 $f $f cp /tmp/silcdoc_html.html/$i $DST done # Generate cross reference files path=`pwd` cd /tmp/silcdoc.html headers=`find . -name "silc*.h" |cut -d/ -f2 |cut -d. -f1` cd $path touch $DST/silcdoc_xref for i in $headers do $ROBO /tmp/silcdoc.html/$i.h $DST/$i.html $TYPE GENXREF $DST/$i.xref echo $DST/$i.xref >>$DST/silcdoc_xref done # Generate the actual detailed documentation path=`pwd` cd /tmp/silcdoc.html headers=`find . -name "silc*.h" |cut -d/ -f2 |cut -d. -f1` cd $path for i in $headers do $ROBO /tmp/silcdoc.html/$i.h $DST/$i.html XREF $DST/silcdoc_xref $TYPE # Generate the TOC file sh gen.sh $DST gen_index.php 1 $DST/$i.html $DST/$i.html # Generate the details and the layout files=`find $DST -name ""$i"-*.html"` for k in $files do sh gen.sh $DST gen_index.php 0 $k $k done rm -f $DST/$i-index.tmpl done # Generate the index and TOC files from the DIRECTORY files for i in $dfiles do # Get library name name=`grep "@LIBRARY=" $i |cut -d= -f2` fname=`grep "@FILENAME=" $i |cut -d= -f2` # Generate links for this library sed -e "/@LINKS@/ r $DST/$fname.links" -e s/@LINKS@//g $i >$DST/$fname # Generate the TOC file for the library sh gen.sh $DST gen_index.php 1 $DST/$fname $DST/$fname # Generate the link for the top index.html for this library echo "
  • $name" >>$DST/index.html.tmp rm -f $DST/$fname.links done # Generate the top index.html file index=`find $SRC -name "LIBINDEX"` version=`grep SILC_VERSION_STRING $SRC/../includes/version_internal.h |cut -d\" -f2` curdate=`date` sed -e "/@VERSION@/s//$version/" -e "/@DATE@/s//$curdate/" -e "/@BODY@/ r $DST/index.html.tmp" -e s/@BODY@//g $index >$DST/index.html sh gen.sh $DST gen_index.php 2 $DST/index.html $DST/index.html # Generate the index toolkit_index.html file $ROBO $DST/silcdoc_xref $DST/toolkit_index.html INDEX HTML TITLE "SILC Toolkit Index" sh gen.sh $DST gen_index.php 2 $DST/toolkit_index.html $DST/toolkit_index.html # Cleanup rm -rf $DST/index.html.tmp rm -rf /tmp/silcdoc.html rm -rf /tmp/silcdoc_html.html exit 0 fi