<?xml version='1.0'?>
<project name="MongoDB Java Driver" default="compile" basedir=".">

  <property name="version" value="2.1"/>
  <property name="targetdir" location="target"/>
  <property name="testdir" location="${targetdir}/test"/>

  <path id="classpath">
    <fileset dir="lib">
      <include name="**/*.jar"/>
    </fileset>
    <pathelement path="conf" />
    <pathelement path="build/main" />
    <pathelement path="build/test" />

  </path>

  <target name="init">
    <mkdir dir="build" />
    <mkdir dir="build/main" />
    <mkdir dir="build/test" />
    <mkdir dir="build/util" />
    <mkdir dir="logs" />
    <mkdir dir="${testdir}" />
  </target>

  <target name="clean">
    <delete dir="build"/>
  </target>

  <target name="compile" depends="init">

    <javac srcdir="src/main"
           destdir="build/main"
           optimize="off"
           deprecation="off"
           source="1.5"
           target="1.5"
           encoding="ISO-8859-1"
           memoryMaximumSize="256M"
           fork="true"
           debug="on" >
      <classpath refid="classpath"/>
    </javac>

    <javac srcdir="src/test"
           destdir="build/test"
           optimize="off"
           deprecation="off"
           source="1.5"
           encoding="ISO-8859-1"
           fork="true"
           debug="on" >
      <classpath refid="classpath"/>
    </javac>

  </target>

  <target name="utilcompile" depends="compile">

    <javac srcdir="src/util"
           destdir="build/util"
           optimize="off"
           deprecation="off"
           source="1.5"
           target="1.5"
           encoding="ISO-8859-1"
           memoryMaximumSize="256M"
           fork="true"
           debug="on" >
      <classpath refid="classpath"/>
    </javac>
  </target>


  <target name="jar" depends="compile" description="Create driver jar">

    <exec executable="git" output="build/main/git-hash">
      <arg value="log" />
      <arg value="--pretty=format:%H" />
      <arg value="-1" />
    </exec>

    <jar jarfile="mongo.jar" manifest="src/main/META-INF/MANIFEST.MF" >
      <fileset dir="build/main" />
    </jar>

    <jar jarfile="bson.jar" >
      <fileset dir="build/main" >
        <not>
          <filename name="com/"/>
        </not>
      </fileset>
    </jar>


  </target>

  <target name="javadocs" depends="compile,utilcompile" description="Generate API docs">

    <delete dir="docs/"/>
    <javadoc packagenames="com.mongodb,com.mongodb.gridfs,com.mongodb.util,org.bson,org.bson.types,org.bson.io,org.bson.util"
             sourcepath="src/main/"
             defaultexcludes="yes"
             destdir="docs/${version}"
             author="true"
             version="true"
             source="1.5"
             use="true"
             access="protected"
             >
      <link href="http://java.sun.com/j2se/1.5/docs/api/" />
      <classpath refid="classpath"/>
      <taglet name="ApiToolsTaglet" path="build/util" />
    </javadoc>

  </target>

  <target name="alljars" depends="jar, javadocs" description="build jar, source jar, javadoc jar">

    <jar jarfile="mongo-sources.jar" >
      <fileset dir="src/main" />
    </jar>

    <jar jarfile="mongo-javadoc.jar" >
      <fileset dir="docs/${version}" />
    </jar>

  </target>

  <target name="rebuild" depends="clean, compile"/>

  <!-- - - - - - - - - - - - - - - - - - - - - - -->
  <!--  test stuff                               -->
  <!-- - - - - - - - - - - - - - - - - - - - - - -->

  <taskdef name="testng"
           classpathref="classpath"
           classname="org.testng.TestNGAntTask"
           >
  </taskdef>

  <target name="test" depends="compile">
    <testng classpathref="classpath" outputdir="${testdir}" listeners="com.mongodb.util.TestNGListener" haltonfailure="true" >
      <jvmarg value="-Xmx512M" />
      <xmlfileset dir="." includes="testng.xml"/>
    </testng>
  </target>

  <target name="examples" depends="compile">

    <javac srcdir="examples"
           destdir="build/test"
           optimize="off"
           deprecation="off"
           source="1.5"
           encoding="ISO-8859-1"
           debug="on" >
      <classpath refid="classpath"/>
    </javac>

    <java classname="QuickTour" >
      <classpath refid="classpath"/>
    </java>

    <java classname="QuickTourAdmin" >
      <classpath refid="classpath"/>
    </java>

  </target>

  <target name="publish">
    <exec dir="." executable="python">
      <arg value="mavenPush.py"/>
      <arg value="${version}"/>
      <arg value="/ebs/maven/"/>
    </exec>
  </target>

  <target name="publish-local">
    <exec dir="." executable="python">
      <arg value="mavenPush.py"/>
      <arg value="${version}"/>
      <arg value="~/.m2/repository/"/>
    </exec>
  </target>

</project>
