#!/bin/sh
#
# Generate GNU/HTML/XML formatted changelogs from CVS
#

# Variables

PATH=$PATH:/usr/local/bin:/usr/java/jdk/jre/bin:/usr/java/jre/bin
PROJECTS="prj"
OUTPUTS=/var/www/html
CONTACT=root@localhost.localdomain

# Code

#
# Get CVSROOT if needed
#
if [ -z "$CVSROOT" -a -f /etc/profile ]
then
  . /etc/profile
fi

if [ -z "$CVSROOT" ]
then
  echo "No CVSROOT defined, exiting." 1>&2
  exit 1
fi

for PROJ in $PROJECTS
do

#
# Preparations
#
mkdir -p $OUTPUTS/$PROJ-cvs-stats
cd $OUTPUTS/$PROJ-cvs-stats || exit 1
cvs co $PROJ > /dev/null 2>&1

#
# cvs2cl/cl2html
#
cvs2cl -f ChangeLog-$PROJ --ignore ChangeLog\* -U $CVSROOT/CVSROOT/users --FSF > /dev/null 2>&1
cvs2cl -f ChangeLog-$PROJ.xml --ignore ChangeLog\* -U $CVSROOT/CVSROOT/users --xml > /dev/null 2>&1
cl2html --entries 0 --viewcvs-url /cgi-bin/cvsweb.cgi/ < ChangeLog-$PROJ.xml > ChangeLog-$PROJ.html 2>&1

#
# StatCVS
#
cvs log > $PROJ-log.txt 2>/dev/null
java -jar /usr/local/share/statcvs.jar -bugzilla /bugzilla/ -cvsweb /cgi-bin/cvsweb.cgi/ -exclude "ChangeLog*" -title $PROJ $PROJ-log.txt . > /dev/null

#
# Clean up
#
echo y | cvs release -d $PROJ > /dev/null
mv index.html statcvs.html
perl -pi -e 's,href="index.html",href="statcvs.html",g' *.html

#
# Create the web page
#
cat << END > index.html
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head><title>$PROJ CVS Statistics</title></head>
<body>
<h1>$PROJ CVS Statistics on `date +%Y-%m-%d\ %H:%M:%S`</h1>
END

cat << END >> index.html
<ul>
<li><a href="ChangeLog-$PROJ">$PROJ ChangeLog</a>
<li><a href="ChangeLog-$PROJ.html">$PROJ ChangeLog.html</a>
<li><a href="ChangeLog-$PROJ.xml">$PROJ ChangeLog.xml</a>
<li><a href="statcvs.html">$PROJ StatCVS Statistics</a>
</ul>
END

cat << END >> index.html
<p>Document prepared by <a href="mailto:$CONTACT">$CONTACT</a>.</p>
</body>
</html>
END

done

exit 0
