#!/bin/ksh
#
# SPDX-License-Identifier: CDDL-1.0
#
# Copyright 2025 Peter Tribble
#

#
# build illuminate
#

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

SVJAR=${JARLIBDIR}/illuminate.jar
JINGLEJAR=${JARLIBDIR}/jingle.jar
JUMBLEJAR=${JARLIBDIR}/jumble.jar
JKJAR=${JARLIBDIR}/jkstat.jar
JPJAR=${JARLIBDIR}/jproc.jar

BUILDJARS=${JINGLEJAR}:${JUMBLEJAR}:${JKJAR}:${JPJAR}

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

#
# 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.illuminate"

case $# in
0)
	javac -Xlint -Xlint:-rawtypes -classpath .:"${BUILDJARS}" $(find org/tribblix -name '*.java')
	jar -cmf illuminate.manifest "${SVJAR}" images/*.png pixmaps/* properties/*.properties help/*.html help/CDDL.txt $(find org/tribblix -name '*.class')
	rm -f $(find org/tribblix -type f -name '*.class')
	exit 0
	;;
esac

case $1 in

javadoc)
	rm -fr javadoc
	mkdir javadoc
	env CLASSPATH=.:"${JKJAR}":"${JPJAR}" javadoc -Xdoclint:all -Xmaxwarns 300 -d javadoc org.tribblix.illuminate org.tribblix.illuminate.helpers org.tribblix.illuminate.explorer org.tribblix.illuminate.pkgview
	exit 0
	;;

clean)
	rm -f $(find org/tribblix -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 org -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}" $(find org/tribblix -name '*.java')
	spotbugs -auxclasspath $(echo lib/java/* | sed 's= =:=g') org
	rm -f $(find org/tribblix -type f -name '*.class')
	exit 0
	;;

packages)
	echo "Use the tribblix-package or standalone-packages arguments"
	exit 0
	;;

tribblix-package)
	sed s:INSTALLED=false:INSTALLED=true: illuminate > illuminate.installed
	./mkproto any deps > prototype.any
	pkgmk -d /tmp -f prototype.any -r "$(pwd)" TRIBilluminate
	pkgtrans -s /tmp /tmp/TRIBilluminate.pkg TRIBilluminate
	rm -fr /tmp/TRIBilluminate
	ls -l /tmp/TRIBilluminate.pkg
	rm prototype.any
	rm illuminate.installed
	rm -f depend
	exit 0
	;;

standalone-packages)
	sed s:INSTALLED=false:INSTALLED=true: illuminate > illuminate.installed
	./mkproto i386 > prototype.i386
	./mkproto sparc > prototype.sparc
	pkgmk -d /tmp -f prototype.i386 -r "$(pwd)" TRIBilluminate
	pkgtrans -s /tmp /tmp/TRIBilluminate-i386.pkg TRIBilluminate
	rm -fr /tmp/TRIBilluminate
	pkgmk -d /tmp -f prototype.sparc -r "$(pwd)" TRIBilluminate
	pkgtrans -s /tmp /tmp/TRIBilluminate-sparc.pkg TRIBilluminate
	rm -fr /tmp/TRIBilluminate
	ls -l /tmp/TRIBilluminate-sparc.pkg /tmp/TRIBilluminate-i386.pkg
	rm prototype.i386 prototype.sparc
	rm illuminate.installed
	rm -f depend
	exit 0
	;;
esac
