123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395 |
- #!/bin/sh
- # generates HTML man pages docs/html/index.html
- # (c) The GRASS Development Team, and Markus Neteler, 2003, 2004, 2005, 2006, 2009
- ## TODO: better fix this in include/Make/Html.make, see bug RT #5361
- # exclude following list of modules from help index:
- EXCLUDEMODS="\
- i.find \
- r.watershed.ram \
- r.watershed.seg \
- v.topo.check \
- helptext.html \
- wxGUI.*"
- # these modules don't use G_parser()
- check_for_desc_override()
- {
- case "$BASENAME" in
- g.parser)
- SHORTDESC="Provides automated parser, GUI, and help support for GRASS scipts."
- ;;
- r.li.daemon)
- SHORTDESC="Support module for r.li landscape index calculations."
- ;;
- esac
- }
- ############# nothing to configure below ############
- # regex-proof module skip list
- EXCLUDEHTML="`echo "$EXCLUDEMODS" | tr ' ' '|' | sed -e 's+\.+\\\\.+g' -e 's+|+\\\\|+g'`"
- #fetch the ARCH for store the files:
- GEMDIR="../gem"
- HTMLDIR="$ARCH_DISTDIR/docs/html"
- GRASSVERSION=`cat "$GISBASE/etc/VERSIONNUMBER"`
- GRASS_MMVER=`cut -d . -f 1-2 "$GISBASE/etc/VERSIONNUMBER"`
- MACOSX=`echo $ARCH | grep -i darwin`
- write_html_header()
- {
- # $1: not used
- # $2: page title
- # $3: is it main index
- cat <<EOF
- <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
- <html>
- <head>
- <title>$2</title>
- <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
- <meta name="Author" content="GRASS Development Team">
- EOF
- if [ "$3" ] && [ "$MACOSX" ] ; then
- cat <<EOF
- <meta name="AppleTitle" content="GRASS GIS $GRASSVERSION Help">
- <meta name="AppleIcon" content="GRASS-$GRASS_MMVER/grass_icon.png">
- <meta name="robots" content="anchors">
- EOF
- fi
- cat <<EOF
- <link rel="stylesheet" href="grassdocs.css" type="text/css">
- </head>
- <body bgcolor="#FFFFFF">
- <!-- this file is generated by tools/build_html_index.sh -->
- <img src="grass_logo.png" alt="GRASS logo"><hr align=center size=6 noshade>
- <h2>GRASS GIS $GRASSVERSION Reference Manual</h2>
- <p><b>Geographic Resources Analysis Support System</b>, commonly
- referred to as <a href="http://grass.osgeo.org">GRASS</a>, is a <a
- href="http://en.wikipedia.org/wiki/Geographic_information_system">Geographic
- Information System</a> (GIS) used for geospatial data management and
- analysis, image processing, graphics/maps production, spatial
- modeling, and visualization. GRASS is currently used in academic and
- commercial settings around the world, as well as by many governmental
- agencies and environmental consulting companies.</p>
- <p>This reference manual details the use of modules distributed with
- Geographic Resources Analysis Support System (GRASS), an open source (GNU
- GPLed), image processing and geographic information system (GIS).</p>
- EOF
- }
- write_html_cmd_overview()
- {
- cat <<EOF
- <!-- the files grass7.html & helptext.html file live in lib/init/ -->
- <table align="center" border="0" cellspacing="8">
- <tbody>
- <tr>
- <td valign="top" bgcolor="e1ecd0" class="box"><h3> Quick Introduction</h3>
- <ul>
- <li><a href="grass6.html">GRASS startup manual page</a></li>
- <li><a href="helptext.html">How to start with GRASS</a></li>
- </ul></td>
- <td valign="top" bgcolor="e1ecd0" class="box"><h3> General</h3>
- <ul>
- <li><a href="general.html">General commands manual</a></li>
- </ul></td>
- </tr>
- <tr>
- <td valign="top" bgcolor="e1ecd0" class="box"><h3> Raster/Image processing</h3>
- <ul>
- <li><a href="rasterintro.html">Intro 2D raster map processing</a></li>
- <li><a href="raster.html">Raster commands manual</a></li>
- <li><a href="raster3dintro.html">Intro 3D raster map (voxel) processing</a></li>
- <li><a href="raster3D.html">Raster3D commands manual</a></li>
- </ul></td>
- <td valign="top" bgcolor="e1ecd0" class="box"><h3> Vector processing</h3>
- <ul>
- <li><a href="vectorintro.html">Intro vector map processing and network analysis</a></li>
- <li><a href="vector.html">Vector commands manual</a></li>
- </ul></td>
- </tr>
- <tr>
- <td valign="top" bgcolor="e1ecd0" class="box"><h3> Display/Graphical User Interfaces</h3>
- <ul>
- <li><a href="wxGUI.html">wxGUI</a> wxPython-based GUI frontend</li>
- </ul>
- <ul>
- <li><a href="display.html">Display commands manual</a></li>
- <li><a href="displaydrivers.html">Display drivers</a></li>
- </ul>
- <ul>
- <li><a href="nviz.html">nviz</a> 3D visualization and animation tool</li>
- <li><a href="xganim.html">xganim</a> tool for animating a raster map series</li>
- </ul></td>
- <td valign="top" bgcolor="e1ecd0" class="box"><h3> Database</h3>
- <ul>
- <li><a href="databaseintro.html">Intro database management</a></li>
- <li><a href="sql.html">SQL support in GRASS GIS</a></li>
- <li><a href="database.html">Database commands manual</a></li>
- </ul></td>
- </tr>
- <tr>
- <td valign="top" bgcolor="e1ecd0" class="box"><h3> Projections</h3>
- <ul>
- <li><a href="projectionintro.html">Intro projections and spatial transformations</a></li>
- </ul></td>
- <td valign="top" bgcolor="e1ecd0" class="box"><h3> Miscellaneous</h3>
- <ul>
- <li><a href="variables.html">GRASS variables and environment variables</a></li>
- <li><a href="gem/index.html">The GRASS Extensions Manager (GEM)</a></li>
- <li><a href="misc.html">Misc. commands manual</a></li>
- </ul></td>
- </tr>
- <tr>
- <td valign="top" bgcolor="e1ecd0" class="box"><h3> Image processing</h3>
- <ul>
- <li><a href="imageryintro.html">Intro image processing</a></li>
- <li><a href="imagery.html">Imagery commands manual</a></li>
- </ul></td>
- <td valign="top" bgcolor="e1ecd0" class="box"><h3> Printing</h3>
- <ul>
- <li><a href="postscript.html">Postscript commands manual</a></li>
- </ul></td>
- </tr>
- </tbody>
- </table>
- EOF
- }
- write_html_footer()
- {
- # $1: unused
- # $2: help index url
- cat <<EOF
- <BR><BR>
- <hr>
- <p><a href="$2">Help Index</a> | <a href="full_index.html">Full Index</a><br>
- © 2003-2009 <a href="http://grass.osgeo.org">GRASS Development Team</a></p>
- </body>
- </html>
- EOF
- }
- expand_module_class_name()
- {
- # $1: module class
- case "$1" in
- d) echo "display" ;;
- db) echo "database" ;;
- g) echo "general" ;;
- i) echo "imagery" ;;
- m) echo "misc" ;;
- ps) echo "postscript" ;;
- p) echo "paint" ;;
- r) echo "raster" ;;
- r3) echo "raster3D" ;;
- s) echo "sites" ;;
- v) echo "vector" ;;
- *) echo "$1" ;;
- esac
- }
- replace_file()
- {
- # $1: filename
- if [ -f $1 ] && cmp $1.tmp $1 >/dev/null ; then
- rm $1.tmp
- else
- mv $1.tmp $1
- fi
- }
- #are we in the tools/ dir?
- if [ ! -f build_html_index.sh ] ; then
- echo "ERROR: this script must be run from the tools/ directory" >&2
- exit 1
- fi
- FULLINDEX=full_index.html
- ################
- #copy over CSS:
- cp -f grassdocs.css $HTMLDIR/
- mkdir -p $HTMLDIR/nviz/
- cp -f grassdocs.css $HTMLDIR/nviz/
- chmod a+r $HTMLDIR/grassdocs.css $HTMLDIR/nviz/grassdocs.css
- #copy over GRASS logo:
- cp -f grass_logo.png $HTMLDIR/
- cp -f grass_logo.png $HTMLDIR/nviz/
- chmod a+r $HTMLDIR/grass_logo.png $HTMLDIR/nviz/grass_logo.png
- if [ "$MACOSX" ] ; then
- cp -f grass_icon.png $HTMLDIR/
- chmod a+r $HTMLDIR/grass_icon.png
- fi
- #copy over GEM docs:
- mkdir -p $HTMLDIR/gem
- cp -f $GEMDIR/docs/GEM-Manual/*.html $HTMLDIR/gem/
- cp -f $GEMDIR/docs/GEM-Manual/img* $HTMLDIR/gem/
- chmod a+r $HTMLDIR/gem/*.html $HTMLDIR/gem/img*
- #process all HTML pages:
- cd "$HTMLDIR"
- #get list of available GRASS modules:
- CMDLIST=`ls -1 *.*.html | grep -v "$FULLINDEX" | grep -v index.html | \
- grep -v "\($EXCLUDEHTML\)" | cut -d'.' -f1 | sort -u`
- CMDLISTNO=`echo $CMDLIST | wc -w | awk '{print $1}'`
- echo "Generating HTML manual pages index (help system)..." >&2
- ###############################################################################
- #begin full index:
- (
- write_html_header - "GRASS GIS $GRASSVERSION Reference Manual: Full index"
- #generate main index of all modules:
- echo "Go <a href=\"index.html\">back to help overview</a><BR>"
- echo "<BR><h3>Full command index:</h3>"
- echo "[ "
- k=0
- for i in $CMDLIST
- do
- k=`expr $k + 1`
- echo -n "<b><a href=\"#$i\">$i.*</a></b>"
- if [ $k -lt $CMDLISTNO ] ; then
- echo -n " | "
- fi
- done
- echo " ]"
- echo "<BR><BR>"
- echo ""
- cat <<EOF
- <table border=0>
- <tr><td> <a href="full_index.html#d">d.*</a> </td><td>display commands</td></tr>
- <tr><td> <a href="full_index.html#db">db.*</a> </td><td>database commands</td></tr>
- <tr><td> <a href="full_index.html#g">g.*</a> </td><td>general commands</td></tr>
- <tr><td> <a href="full_index.html#i">i.*</a> </td><td>imagery commands</td></tr>
- <tr><td> <a href="full_index.html#m">m.*</a> </td><td>miscellaneous commands</td></tr>
- <tr><td> <a href="full_index.html#ps">ps.*</a> </td><td>postscript commands</td></tr>
- <tr><td> <a href="full_index.html#r">r.*</a> </td><td>raster commands</td></tr>
- <tr><td> <a href="full_index.html#r3">r3.*</a> </td><td>raster3D commands</td></tr>
- <tr><td> <a href="full_index.html#v">v.*</a> </td><td>vector commands</td></tr>
- <tr><td> <a href="nviz.html">nviz</a> </td><td>visualization suite</td></tr>
- <tr><td> <a href="wxGUI.html">wxGUI</a> </td><td>wxPython-based GUI frontend</td></tr>
- <tr><td> <a href="xganim.html">xganim</a> </td><td>raster map slideshow</td></tr>
- </table>
- EOF
- #for all module groups:
- for i in $CMDLIST
- do
- cat <<-EOF
- <a name="$i"></a>
- <BR><BR><h3>$i.* commands:</h3>
- <table>
- EOF
- #for all modules:
- for i in `ls -1 $i.*.html | grep -v "\($EXCLUDEHTML\)"`
- do
- BASENAME=`basename $i .html`
- SHORTDESC="`cat $i | awk '/NAME/,/SYNOPSIS/' | grep '<em>' | cut -d'-' -f2- | sed 's+^ ++g' | grep -vi 'SYNOPSIS' | head -n 1`"
- check_for_desc_override
- echo "<tr><td valign=\"top\"><a href=\"$i\">$BASENAME</a></td> <td>$SHORTDESC</td></tr>"
- done
- echo "</table>"
- done
- write_html_footer - index.html
- ) > "$FULLINDEX.tmp"
- replace_file "$FULLINDEX"
- # done full index
- ###############################################################################
- #next write separate module pages:
- #for all module groups:
- for k in $CMDLIST
- do
- MODCLASS=`expand_module_class_name $k`
- FILENAME="$MODCLASS.html"
- (
- write_html_header - "GRASS GIS $GRASSVERSION Reference Manual: $MODCLASS"
- echo "Go <a href="index.html">back to help overview</a><BR><BR><BR>"
- echo "<b>$MODCLASS commands:</b>"
- echo "<table>"
- #for all modules:
- for k in `ls -1 $k.*.html | grep -v "\($EXCLUDEHTML\)"`
- do
- BASENAME=`basename $k .html`
- SHORTDESC="`cat $k | awk '/NAME/,/SYNOPSIS/' | grep '<em>' | cut -d'-' -f2- | sed 's+^ ++g' | grep -vi 'SYNOPSIS' | head -n 1`"
- check_for_desc_override
- echo "<tr><td valign=\"top\"><a href=\"$k\">$BASENAME</a></td> <td>$SHORTDESC</td></tr>"
- done
-
- echo "</table>"
- write_html_footer - index.html
- ) > "$FILENAME.tmp"
- replace_file "$FILENAME"
- done
- ###############################################################################
- #next write main page:
- FILENAME=index.html
- (
- write_html_header - "GRASS GIS $GRASSVERSION Reference Manual" 1
- write_html_cmd_overview
- cat <<EOF
- <!-- GEM Extensions StartHTML. Do not delete or change this comment! -->
- EOF
- write_html_footer - index.html
- ) > "$FILENAME.tmp"
- replace_file "$FILENAME"
- ###############################################################################
- echo "Generated HTML docs in $HTMLDIR/index.html"
- echo "----------------------------------------------------------------------"
- echo "Following modules are missing the 'description.html' file in src code:"
- for i in `find . -name "*.*.html" | sort | grep -v "$FULLINDEX" | grep -v 'index.html' | grep -v "$EXCLUDEHTML"`
- do
- if grep 'DESCRIPTION' $i >/dev/null 2>&1 ; then
- :
- else
- echo `echo $i | sed 's?./??' | sed 's/.html//'`
- fi
- done
- echo "----------------------------------------------------------------------"
|