#!/bin/sh
# DOS users, please run claycompile.bat

#
# Script for Unix machines to compile Clay
# v0.10
#

# Adjust the following required environment variables
# to match your machine's configuation.

	echo
	echo Setting environment variables...
	JAVA_HOME=/usr/local/java4
	CLAY_HOME=/home/bob/code/clayRelease
	RMISERVER_HOSTNAME=159.91.138.117
	RMISERVER_CODEBASE=//$RMISERVER_HOSTNAME/clay

# The rest of the environment variables need not
# be modified.

	CLAY_CLASSPATH=$CLASSPATH:$JAVA_HOME/lib/tools.jar
	CLAY_CLASSPATH=$CLAY_CLASSPATH:$CLAY_HOME/lib/claycore.jar
	CLAY_CLASSPATH=$CLAY_CLASSPATH:$CLAY_HOME/lib/clayserver.jar
	CLAY_CLASSPATH=$CLAY_CLASSPATH:$CLAY_HOME/lib/clayutil.jar
	CLAY_CLASSPATH=$CLAY_CLASSPATH:$CLAY_HOME/lib/clayclient.jar
	CLAY_CLASSPATH=$CLAY_CLASSPATH:$CLAY_HOME/lib/crimson.jar
	CLAY_CLASSPATH=$CLAY_CLASSPATH:$CLAY_HOME/lib/jaxp.jar
	CLAY_CLASSPATH=$CLAY_CLASSPATH:$CLAY_HOME/lib/xalan.jar
	CLAY_CLASSPATH=$CLAY_CLASSPATH:$CLAY_HOME/lib/jdbc7.1-1.2.jar
	CLAY_CLASSPATH=$CLAY_CLASSPATH:$CLAY_HOME/lib/mysql_uncomp.jar
	CLAY_CLASSPATH=$CLAY_CLASSPATH:$CLAY_HOME/classes

# Functions to compile each portion of the package.

compileCore()
{
  echo "Compiling Clay core..."
  echo
  $JAVA_HOME/bin/javac -d $CLAY_HOME/classes -classpath $CLAY_CLASSPATH $CLAY_HOME/src/edu/tcnj/cs/clay/core/*.java
}

compileCVS()
{
  echo "Compiling Clay cvs..."
  echo
  $JAVA_HOME/bin/javac -d $CLAY_HOME/classes -classpath $CLAY_CLASSPATH $CLAY_HOME/src/edu/tcnj/cs/clay/cvs/*.java
}

compileUtil()
{
  echo "Compiling Clay util..."
  echo
  $JAVA_HOME/bin/javac -d $CLAY_HOME/classes -classpath $CLAY_CLASSPATH $CLAY_HOME/src/edu/tcnj/cs/clay/util/*.java
}

compileServer()
{
  echo "Compiling Clay server..."
  echo
  $JAVA_HOME/bin/javac -d $CLAY_HOME/classes -classpath $CLAY_CLASSPATH $CLAY_HOME/src/edu/tcnj/cs/clay/server/*.java
}

compileClient()
{
  echo "Compiling Clay client..."
  echo
  $JAVA_HOME/bin/javac -d $CLAY_HOME/classes -classpath $CLAY_CLASSPATH $CLAY_HOME/src/edu/tcnj/cs/clay/client/*.java
}

compileTools()
{
  echo "Compiling Clay tools..."
  echo
  $JAVA_HOME/bin/javac -d $CLAY_HOME/tools/classes -classpath $CLAY_CLASSPATH $CLAY_HOME/tools/*.java
}

createJar()
{
  echo "Creating clay$1.jar..."
  jar -cf $CLAY_HOME/lib/clay$1.jar $CLAY_HOME/classes/edu/tcnj/cs/clay/$1/*.class
}

# Parse command line options.

case "$1" in
  core)
        compileCore
        ;;
  cvs)
        compileCVS
        ;;
  util)
        compileUtil
        ;;
  client)
        compileClient
        ;;
  server)
        compileServer
        ;;
  tools)
        compileTools
        ;;
  clean)
	rm -f -r $CLAY_HOME/classes/edu
        ;;
  full)
        compileCore
	compileCVS
	compileUtil
	compileServer
	compileClient
	compileTools
        ;;
  clean)
        #Delete all the classes here and if 2 then jars too.
        ;;
  *)
	echo
	echo Clay Unix Compilation Script
	echo 
	echo -----------------------------------------------------------------------
	echo Warning! There is a required order in which components must be compiled
	echo because of package dependencies. The stable jar \(claycore.jar\) must
	echo already exist in the classpath if working on, for example, the client.
	echo -----------------------------------------------------------------------
	echo
	echo Usage... runClay.sh [core][util][cvs][server][client]
	echo "                    [tools][full][clean] {-makeJar}"
	echo Commands:
	echo "  full    - Compile Clay in the default order"
	echo "  clean   - Clean the directory structure."
	echo "  client  - Compile the client package"
	echo "  core    - Compile the core package"
	echo "  cvs     - Compile the CVS package"
	echo "  server  - Compile the server package"
	echo "  tools   - Compile the tools package (-makeJar ignored)"
	echo "  util    - Compile the util package"
	echo "  makeJar - Generate the corresponding JAR file."
	echo "            If used with clean, deletes all Clay jars in"
	echo "            the $CLAY_HOME/lib directory."
	echo "            Note: JAXP and JDBC drivers remain untouched."
esac

# Create/Delete JARs

if [ "$2" = "-makeJar" ] ; then
  if [ "$1" = "clean" ] ; then
    echo "Deleting Jars..."
    rm $CLAY_HOME/lib/claycore.jar
    rm $CLAY_HOME/lib/claycvs.jar
    rm $CLAY_HOME/lib/clayutil.jar
    rm $CLAY_HOME/lib/clayserver.jar
    rm $CLAY_HOME/lib/clayclient.jar
  elif [ "$1" = "full" ] ; then
    createJar core
    createJar cvs
    createJar util
    createJar server
    createJar client
  else
    createJar $1
  fi
fi

# Cleanup variables before exiting.
JAVA_HOME=
CLAY_HOME=
CLAY_CLASSPATH=

echo


