#!/bin/bash

function print_usage {
    cat << EOF
Usage: cnc_c [options] <class-name> ...
where [options] includes:
    -classpath <path>        search path for class files
    -sourcepath <path>       search path for hj source files (must includes path to class-name)
    -destdir <path>          location where to output classes
    -h -help --help          print this message
    -version --version 	   	 print version number of the hj compiler
EOF
    exit 1
}

CLASSNAME=
USER_CLASSPATH=
USER_SOURCEPATH=

if [ -z "${CNC_HOME}" ]; then
	echo ""
	echo "ERROR CNC_HOME environment variable must be defined and point to a CnC Distribution"
	echo ""
    exit 1
fi

export HJ_HOME=${CNC_HOME}
HJC=${HJ_HOME}/bin/hjc

verbose=""
version=""
args=""
debug=""

parse=true
while [ -n "$1" ]; do
    if [ -z "$parse" ]; then
	args=$args $1
        shift
     P   continue
    fi
    case "$1" in
        -h|-help|--help) print_usage; break;;
        -version|--version) version="1";;
        -classpath|-cp) shift; USER_CLASSPATH="$1";;
        -sourcepath|-sp) shift; USER_SOURCEPATH="$1";;
        -destdir|-d) shift; DEST_DIR="$1";;
        --) parse=;;
        *) args="$args $1";;
    esac
    shift
done

if [ ! -z "$version" ]; then
	CMD="$HJC -version"
	eval ${CMD}
	exit $?
fi

if [ -z "$args" ]; then
	print_usage;
fi 

if [ ! -z "$USER_SOURCEPATH" ]; then
	SOOT_OPTIONS="${SOOT_OPTIONS} -sp .:${USER_SOURCEPATH}"
else
	SOOT_OPTIONS="${SOOT_OPTIONS} -sp ."	
fi 

if [ ! -z "$USER_CLASSPATH" ]; then
	SOOT_OPTIONS="${SOOT_OPTIONS} -cp ${USER_CLASSPATH}"
fi 

if [ ! -z "$DEST_DIR" ]; then
	SOOT_OPTIONS="${SOOT_OPTIONS} -d ${DEST_DIR}"
else
	SOOT_OPTIONS="${SOOT_OPTIONS} -d ."
fi 
 
CMD="$HJC ${SOOT_OPTIONS} $args"
	
[ -n "$verbose" ] && echo ${CMD}

eval ${CMD}
exit $?