#!/bin/sh
#
# SPDX-License-Identifier: CDDL-1.0
#
# Copyright 2025 Peter Tribble
#
# Usage:
#
# ./build javadoc
#    Generates the javadoc
#
# ./build
#    Builds all the java classes and creates the jar
#

PATH=/usr/jdk/instances/jdk11/bin:$PATH
export PATH

JKDIR=${0%/*}
LIBDIR=${JKDIR}/lib
JARLIBDIR=${LIBDIR}/java

JFJAR=${JARLIBDIR}/jfreechart-1.5.6.jar
JANGLEJAR=${JARLIBDIR}/jangle.jar
JINGLEJAR=${JARLIBDIR}/jingle.jar
JUMBLEJAR=${JARLIBDIR}/jumble.jar
SNMPJAR=${JARLIBDIR}/snmp.jar
MIBBLEJARS=${JARLIBDIR}/grammatica-1.4.jar:${JARLIBDIR}/mibble-2.3.jar
BUILDJARS=${JFJAR}:${JINGLEJAR}:${JUMBLEJAR}:${SNMPJAR}:${MIBBLEJARS}

#
# run
# ./build pmd
# to use this, you must have pmd in your path
#
# new PMD version 7 only has categories, configured in pmd-ruleset.xml
#
PMDRULES="./pmd-ruleset.xml"
PMDCACHE="${HOME}/.pmd/cache.jangle"

case $1 in
javadoc)
	rm -fr javadoc
	mkdir javadoc
	javadoc -classpath "$BUILDJARS:." -Xdoclint:all -d javadoc uk.co.petertribble.jangle
	exit 0
	;;
clean)
	rm -f $(find uk/co -type f -name '*.class')
	rm -f $(find . -type f -name '*~')
	rm -fr javadoc
	exit 0
	;;
pmd)
	if [ ! -d "${HOME}/.pmd" ]; then
	    mkdir -p "${HOME}/.pmd"
	fi
	pmd check --cache "${PMDCACHE}" -d uk -R ${PMDRULES} --use-version java-11 --aux-classpath $(echo lib/java/* | sed 's= =:=g') 2>/dev/null
	pmd check --cache "${PMDCACHE}.html" -d help/*.html -R category/html/bestpractices.xml 2>/dev/null
	exit 0
	;;
spotbugs)
	#
	# spotbugs works on the class files, so those need to be available
	#
	javac -Xlint -Xlint:-rawtypes -classpath ".:${BUILDJARS}" uk/co/petertribble/jangle/*.java
	spotbugs -auxclasspath $(echo lib/java/* | sed 's= =:=g') uk
	rm -f $(find uk/co -type f -name '*.class')
	exit 0
	;;
packages)
	sed s:INSTALLED=false:INSTALLED=true: jangle > jangle.installed
	./mkproto $2 > prototype
	pkgmk -d /tmp -f prototype -r $(pwd) TRIBjangle
	pkgtrans -s /tmp /tmp/TRIBjangle.pkg TRIBjangle
	rm -fr /tmp/TRIBjangle
	ls -lh /tmp/TRIBjangle.pkg
	rm prototype
	rm jangle.installed
	rm -f depend
	exit 0
	;;
esac

javac -Xlint -Xlint:-rawtypes -classpath ".:${BUILDJARS}" uk/co/petertribble/jangle/*.java

jar -cmf jangle.manifest "${JANGLEJAR}" pixmaps/*.png help/*.html help/CDDL.txt properties/*.properties $(find uk/co -name '*.class')

rm -f $(find uk/co -type f -name '*.class')
