#!/bin/sh
#
# SPDX-License-Identifier: CDDL-1.0
#
# Copyright 2025 Peter C. Tribble
#

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

#
# new PMD version 7 only has categories, configured in pmd-ruleset.xml
#
PMDRULES="./pmd-ruleset.xml"
PMDCACHE="${HOME}/.pmd/cache.sphaero2"

case $1 in
clean)
	rm -f $(find . -name '*.class')
	rm -f $(find . -name '*~')
	rm -fr javadoc
	exit 0
	;;
package)
	./pkg/mkproto > pp
	pkgmk -d /tmp -f pp -r $(pwd) TRIBsphaero2
	pkgtrans -s /tmp /tmp/TRIBsphaero2.pkg TRIBsphaero2
	rm -fr /tmp/TRIBsphaero2
	ls -l /tmp/TRIBsphaero2.pkg
	rm pp
	exit 0
	;;
jlink)
	if [ -n "$2" ]; then
	    jlink --compress=2 -G --no-header-files --no-man-pages --launcher sphaero2=uk.co.petertribble.sphaero2/uk.co.petertribble.sphaero2.JigsawFrame --module-path=sphaero2.jar --add-modules uk.co.petertribble.sphaero2 --output "$2"
	else
	    echo "ERROR: need an output directory to be specified"
	fi
	exit 0
	;;
javadoc)
	rm -fr javadoc
	mkdir javadoc
	javadoc -Xdoclint:all -d javadoc uk.co.petertribble.sphaero2
	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 2>/dev/null
	exit 0
	;;
spotbugs)
	#
	# spotbugs works on the class files, so those need to be available
	#
	javac -Xlint uk/co/petertribble/sphaero2/*.java
	spotbugs -auxclasspath sphaero2.jar uk
	rm -f $(find . -name '*.class')
	exit 0
	;;
esac

javac -Xlint module-info.java
javac -Xlint uk/co/petertribble/sphaero2/*.java
jar cmf sphaero2.manifest sphaero2.jar $(find uk -name '*.class') module-info.class pixmaps/sphaero2.png
rm -f $(find . -name '*.class')
