#! /bin/sh

#
# Simplified findbugs startup script.
# This is an experiment.
#

program="$0"

# Follow symlinks until we get to the actual file.
while [ -h "$program" ]; do
	link=`ls -ld "$program"`
	link=`expr "$link" : '.*-> \(.*\)'`
	if [ "`expr "$link" : '/.*'`" = 0 ]; then
		# Relative
		dir=`dirname "$program"`
		program="$dir/$link"
	else
		# Absolute
		program="$link"
	fi
done

# Assume findbugs home directory is the parent
# of the directory containing the script (which should
# normally be "$findbugs_home/bin").
dir=`dirname "$program"`
findbugs_home="$dir/.."

# Make absolute
findbugs_home=`cd "$findbugs_home" && pwd`

fb_pathsep=':'

if [ ! -d "$findbugs_home" ]; then
	echo "The path $findbugs_home,"
	echo "which is where I think FindBugs is located,"
	echo "does not seem to be a directory."
	exit 1
fi

# Choose default java binary
fb_javacmd="/usr/local/bin/java"

# Default UI is GUI2
fb_launchui="2"

#
# Stuff we're going to pass to the JVM as JVM arguments.
#
jvm_debug=""
jvm_maxheap="-Xmx768m"
jvm_ea=""
jvm_conservespace=""
jvm_user_props=""

#
# Process command line args until we hit one we don't recognize.
#
finishedArgs=false
while [ $# -gt 0 ] && [ "$finishedArgs" = "false" ]; do

	arg=$1

	case $arg in
		-textui)
			shift
			fb_launchui="0"
			;;

		-gui)
			shift
			fb_launchui="2"
			;;

		-gui1)
			shift
			fb_launchui="1"
			;;

		-maxHeap)
			shift
			jvm_maxheap="-Xmx$1m"
			shift
			;;

		-ea)
			shift
			jvm_ea="-ea"
			;;

		-javahome)
			shift
			fb_javacmd="$1/bin/java"
			shift
			;;

		-debug)
			shift
			jvm_debug="-Dfindbugs.debug=true"
			;;

		-conserveSpace)
			shift
			jvm_conservespace="-Dfindbugs.conserveSpace=true"
			;;

		-property)
			shift
			jvm_user_props="-D$1 $jvm_user_props"
			shift
			;;

		-D*=*)
			jvm_user_props="$1 $user_props"
			shift
			;;

		-version)
			shift
			fb_launchui="version"
			;;

		-help)
			shift
			fb_launchui="help"
			;;

		# All arguments starting from the first unrecognized arguments
		# are passed on to the Java app.
		*)
			finishedArgs=true
			;;
	esac

done

#
# Launch JVM
#
exec "$fb_javacmd" \
	-Dfindbugs.home="$findbugs_home" \
	$jvm_debug $jvm_maxheap $jvm_ea $jvm_conservespace $jvm_user_props \
	-Dfindbugs.launchUI=$fb_launchui \
	-jar $findbugs_home/lib/findbugs.jar \
	${@:+"$@"}
