#!/bin/sh
#
# prcs-javadoc (prcs project list) /destination/path
#
# This program generates javadoc documentation for the latest files in
# a set of PRCS projects. It's a bit rough around the edges, but
# hopefully will prove of use to some people.
#
# (c) 1999
# Rafael Kitover (rkitover@io.com)
# Version 0.2: November 5th, 1999
#
# This program may be distributed under the same terms as PRCS itself.
#
set -e
## configuration
# variables you can set
#
# PRCS_REPOSITORY -- where projects are checked out, see prcs(1)
# JAVA -- path to java executable
# JAVA_ARGS -- arguments for java (heap size, etc)
# JAVA_COMPILER -- same as for java, the JIT to use
# JAVADOC -- class name for javadoc, usually sun.tools.javadoc.Main
# JAVADOC_ARGS -- arguments to pass to javadoc (see javadoc with no args)
# JAVADOC_IMAGES-- directory where images that are referenced by javadoc
# generated html are stored.
# path to your java executable
if [ -z "$JAVA" ]; then
if [ -n "`which java`" ]; then
JAVA="java"
else
JAVA="/usr/local/java/bin/java"
fi
fi
# args for the java compiler
# you want a big heap because javadoc uses a tonne of memory
# I use 64megs and the JIT compiler "tya".
if [ -z "$JAVA_ARGS" ]; then JAVA_ARGS="-mx64m -ms64m"; fi
if [ -z "$JAVA_COMPILER" ]; then
if [ -n "`$JAVA -version 2>&1 | head -1 | grep '1.1.'`" ]; then
export JAVA_COMPILER=tya # just guessing here, doesn't matter
elif [ -n "`$JAVA -version 2>&1 | head -1 | grep '1.2.'`" ]; then
export JAVA_COMPILER=sunwjit
fi
else
export JAVA_COMPILER # make sure it's available to java
fi
# name of the javadoc package
if [ -z "$JAVADOC" ]; then JAVADOC=sun.tools.javadoc.Main; fi
# javadoc args
# -private will generate private methods and variables too
if [ -z "$JAVADOC_ARGS" ]; then JAVADOC_ARGS="-private"; fi
# directory where javadoc images can be found
if [ -z "$JAVADOC_IMAGES" ]; then JAVADOC_IMAGES=`dirname \`locate method-index.gif | head -1\``; fi
## end configuration
####### functions #######
Die ()
{
echo $*
Cleanup
Usage
}
Usage ()
{
cat <<- USAGE
Usage:
$0: (list of prcs projects) /destination/path
USAGE
exit 1
}
Cleanup ()
{
PROGNAME=`basename ${0}`
rm -rf /tmp/$PROGNAME.$$
}
#### code ####
# parse params, get $PROJECTS and $DESTDIR
if [ $# -lt 2 ]
then
Usage
fi
PROJECTS=""
while [ $# -ne 1 ]
do
PROJECTS="$PROJECTS $1"
shift
done
DESTDIR=$1
# make working dir, cd to it
PROGNAME=`basename ${0}`
mkdir -p /tmp/$PROGNAME.$$
cd /tmp/$PROGNAME.$$
# checkout projects
mkdir -p $PROJECTS
for i in $PROJECTS
do
cd $i
prcs checkout $i || Die "Invalid project."
cd ..
done
# make sure destination directory exists, or can be created
if [ ! -d $DESTDIR ]
then
mkdir -p $DESTDIR || Die "Could not create directory: $DESTDIR"
fi
# delete everything there
rm -rf $DESTDIR/* || Die "Could not delete files in $DESTDIR"
# set classpath
for i in `find $PROJECTS -name '*.java' -printf '%h\n' | sort -u`
do
CLASSPATH=$CLASSPATH:/tmp/$PROGNAME.$$/$i
done
# add current dir as well
CLASSPATH=$CLASSPATH:.
# create a list of packages
PACKAGES=""
for i in `find $PROJECTS -name '*.java' -exec egrep '^( |\t)*package( |\t)+(\.|\w)+( |\t)*;( |\t)*$' {} \; |
sed -e 's/^ \+//' |
sort -u |
sed -e 's/^package\( \|\t\)\+//' -e 's/;//'`
do
PACKAGES="$PACKAGES $i"
done
# run javadoc, if is because of the set -e
if
$JAVA $JAVA_ARGS $JAVADOC $JAVADOC_ARGS -d $DESTDIR $PACKAGES
then
echo -n # do nothing
fi
# put in a link to images
ln -s $JAVADOC_IMAGES $DESTDIR/images
# make tree.html the default starting point
ln -s $DESTDIR/tree.html $DESTDIR/index.html
Cleanup
exit 0
syntax highlighted by Code2HTML, v. 0.9.1