#!/bin/bash

# The basic FLAS compiler as a standalone tool
# This assumes that it is being run from $FLAS_ROOT/bin/flas and looks for $FLAS_ROOT/lib and $FLAS_ROOT/flascklib relative to that

root="`dirname $0`"
root="`dirname $root`"
defines=""
UPLOAD=false
CLEARLINE=false
USERFLIM=true

MLIB=''
MODULES=''
MODULEDIR=''
MCP=''

if [ -d "$root/modules" ] ; then
  MLIB="--moduledir"
  MODULEDIR="$root/modules"
  MODULES=""
  
  for i in "$root/modules"/* ; do
    mod=`basename "$i"`
    MODULES="$MODULES --module $mod"
    MCP="${MCP}:$root/modules/$mod/jars/core/"'*:'"$root/modules/$mod/jars/core/"'*'
  done
fi

while [ $# -gt 0 ] ; do
  case "$1" in
    -D*)
      defines="$defines $1"
      shift
      ;;
    --clear)
      CLEARLINE=true
      shift
      ;;
    --rootflim)
      USERFLIM=false
      shift
      ;;
    *)
      break
      ;;
  esac
done

for i in "$@" ; do
  if [ "$i" == "--upload" ] ; then
    UPLOAD=true
  fi
done


base() {   
	java \
	  ${defines} \
	  -cp "$root"/'lib/*'"$MCP":"$root"'/flim/*' \
	   org.flasck.flas.Main "$@"
}

if [ "$UPLOAD" = true ] ; then
  base "$@"
elif [ "$CLEARLINE" = true ] ; then
  base "$@"
elif [ "$USERFLIM" = false ] ; then   
  base --flascklib "$root/flascklib" $MLIB "$MODULEDIR" $MODULES --flim "$root/flim" "$@"
else   
  base --flascklib "$root/flascklib" $MLIB "$MODULEDIR" $MODULES --import "$root/flim" --flim "$root/userflim" "$@"
fi