<project name="junit" default="dist" basedir="."
         xmlns:artifact="antlib:org.apache.maven.artifact.ant">
  <tstamp />
  <taskdef resource="net/sf/antcontrib/antcontrib.properties"/>

  <property file="${user.home}/.junit.properties" />
  <property name="src" value="src/main/java" />
  <property name="target" location="target" />
  <property name="bin" location="${target}/main" />
  <property name="version-base" value="4.11" />
  <property name="version-status" value="-SNAPSHOT" />
  <property name="version" value="${version-base}${version-status}" />
  <property name="dist" value="junit${version}" />
  <property name="versionfile" value="${src}/junit/runner/Version.java" />
  <property name="zipfile"  value="${dist}/${dist}.zip" />
  <property name="testsrc" location="src/test/java" />
  <property name="testbin" location="${target}/test/java" />
  <property name="unjarred" 
            value="**/*.jar, ${testfiles}, doc/**, README.html, .classpath, .project, cpl-v10.html" />

  <property name="binjar" value="junit-${version}.jar" />
  <property name="srcjar" value="junit-${version}-src.jar" />
  <property name="docjar" value="junit-${version}-javadoc.jar" />

  <property name="depjar" value="junit-dep-${version}.jar" />
  <property name="depsrcjar" value="junit-dep-${version}-src.jar" />
  <property name="depdocjar" value="junit-dep-${version}-javadoc.jar" />

  <property name="javadocdir" location="${dist}/javadoc" />
  <property name="javadoczip" location="${dist}-javadoc.zip" />
  <property name="hamcrestlib" location="lib/hamcrest-core-1.3.jar" />
  <property name="hamcrestlibsources" location="lib/hamcrest-core-1.3-sources.jar" />
  <property name="hamcrestsrc" location="${dist}/temp.hamcrest.source" />

  <property name="maven.deploy.goal" value="org.apache.maven.plugins:maven-gpg-plugin:1.1:sign-and-deploy-file" />

  <target name="init">
    <tstamp/>
  </target>

  <target name="versiontag" depends="init">
    <filter token="version" value="${version}" />
  
    <copy 
        file="${versionfile}.template" 
        tofile="${versionfile}" 
        filtering="on"
        overwrite="true"
        />
  </target>

  <target name="clean">
    <!-- If two builds are made within a minute -->
    <delete dir="${dist}" quiet="true" />
    <!-- Delete all previous temporary build artifacts -->
    <delete dir="${target}" quiet="true" />
    
    <delete file="${zipfile}" quiet="true"/>
    <delete file="${javadoczip}" />
  </target>

  <macrodef name="junit_compilation">
    <attribute name="srcdir"/>
    <attribute name="destdir"/>
    <attribute name="classpath"/>
    <sequential>
      <mkdir dir="@{destdir}"/>
      <javac 
          srcdir="@{srcdir}"
          destdir="@{destdir}"
          debug="on"
          classpath="@{classpath}"
          includeantruntime="false"
          source="1.5"
          target="1.5"
          >
        <compilerarg value="-Xlint:unchecked" />
      </javac>
    </sequential>
  </macrodef>
  
  <target name="build" depends="versiontag">
    <junit_compilation srcdir="${src}" destdir="${bin}" classpath="${hamcrestlib}"/>
    <unjar src="${hamcrestlib}" dest="${bin}" />
    <junit_compilation srcdir="${testsrc}" destdir="${testbin}" classpath="${hamcrestlib};${bin}"/>
  </target>

  <target name="jars" depends="build">
    <mkdir dir="${dist}" />
    <jar 
        jarfile="${dist}/${srcjar}"
        basedir="${src}"
        excludes="${unjarred}, **/*.class"
        />
    <jar 
        jarfile="${dist}/${binjar}"
        basedir="${bin}"
        excludes="${unjarred}, **/*.java, build.xml"
        />
    <jar 
        jarfile="${dist}/${depjar}" 
        basedir="${bin}" 
        excludes="${unjarred}, org/hamcrest/**, **/*.java, build.xml" 
        />
  </target>

  <target name="all.maven.jars" depends="jars,javadoc">
    <mkdir dir="${dist}" />
    <jar 
        jarfile="${dist}/${depsrcjar}"
        basedir="${src}"
        excludes="${unjarred}, **/*.class"
        />
    <jar 
        jarfile="${dist}/${depdocjar}"
        basedir="${javadocdir}"
        excludes="${unjarred}, org/hamcrest/**"
        />
  </target>

  <target name="samples-and-tests">
    <copy todir="${dist}">
      <fileset dir="${testbin}" />
      <fileset dir="${testsrc}" />
    </copy>
  </target>

  <target name="unjar.hamcrest">
    <unjar src="${hamcrestlibsources}" dest="${hamcrestsrc}" />
  </target>
  
  <target name="release-notes">
    <property name="basename" value="doc/ReleaseNotes${version-base}" />
    <exec executable="perl" failonerror="true">
      <arg file="build/Markdown.pl"/>
      <arg file="${basename}.md"/>
      <redirector output="${basename}.html" />
    </exec>
  </target>
  
  <target name="javadoc" depends="unjar.hamcrest">
    <javadoc destdir="${javadocdir}"
             author="false"
             version="false"
             use="false"
             windowtitle="JUnit API"
             stylesheetfile="stylesheet.css"
             >
      <excludepackage name="junit.*" />
      <excludepackage name="org.junit.internal.*" />
      <excludepackage name="org.junit.experimental.theories.internal.*" />
      
      <sourcepath location="${src}" />
      <sourcepath location="${hamcrestsrc}" />
      <link href="http://java.sun.com/javase/6/docs/api/" />
    </javadoc>
  </target>

  <target name="javadoczip">
    <delete file="${javadoczip}" />
    <antcall target="javadoc" />
    <zip basedir="${javadocdir}" file="${javadoczip}" />
  </target>

  <target name="populate-dist" 
          depends="clean, build, jars, samples-and-tests, javadoc, release-notes"
          >
    <copy todir="${dist}/doc">
      <fileset dir="doc"/>
    </copy>
    <copy file="README.html" tofile="${dist}/README.html" />
    <copy file="BUILDING" tofile="${dist}/BUILDING" />
    <copy file="cpl-v10.html" tofile="${dist}/cpl-v10.html" />
    <copy file="build.xml" tofile="${dist}/build.xml" />
  </target>

  <macrodef name="run-dist-tests">
    <!-- Runs the tests against the built jar files -->
    <element name="extra-args" implicit="yes" />
    <sequential>
      <java classname="org.junit.runner.JUnitCore" fork="yes" failonerror="true">
        <extra-args />  
        <arg value="org.junit.tests.AllTests"/>
        <classpath>
          <pathelement location="${dist}" />
          <pathelement location="${dist}/${binjar}" />
        </classpath>
      </java>    
    </sequential>
  </macrodef>

  <macrodef name="run-local-tests">
    <!-- Runs the tests against the local class files -->
    <sequential>
      <java classname="org.junit.runner.JUnitCore" fork="yes" failonerror="true">
        <arg value="org.junit.tests.AllTests"/>
        <classpath>
          <pathelement location="${bin}" />
          <pathelement location="${testbin}" />
          <pathelement location="${hamcrestlib}" />
        </classpath>
      </java>    
    </sequential>
  </macrodef>

  <target name="test" depends="build">
    <run-local-tests />
  </target>

  <target name="dist" depends="populate-dist">
    <run-dist-tests>
      <jvmarg value="-Dignore.this=ignored"/>
    </run-dist-tests>
  </target>

  <target name="profile" depends="populate-dist">
    <run-dist-tests>
      <jvmarg value="-agentlib:hprof=cpu=samples"/>
    </run-dist-tests>
  </target>

  <target name="zip" depends="dist">
    <zip zipfile="${zipfile}" basedir="." includes="${dist}/**" />
  </target>

  <target name="upload.to.sourceforge" depends="zip">
    <ftp server="upload.sourceforge.net"
         userid="anonymous"
         password="saff@mit.edu"
         remotedir="incoming"
         >
      <fileset dir="${dist}" includes="*.jar" />
      <fileset file="${zipfile}" />
    </ftp>
    <echo message="To upload docs, use build/upload_docs.sh" />
  </target>

  <!-- to do automatic build upload, you need the maven ant tasks jar. -->
  <!-- therefore, you must run ant as ant -lib build/lib stage.maven -->
  <macrodef name="push.maven.artifact">
    <attribute name="file" />
    <attribute name="pom" />
    <attribute name="packaging" />
    <attribute name="url" />
    <attribute name="repo.id" />
    <element name="artifact.args" implicit="true" optional="true" />
    <sequential>
      <artifact:mvn failonerror="true">
        <arg value="${maven.deploy.goal}" />
        <arg value="-Durl=@{url}" />
        <arg value="-DrepositoryId=@{repo.id}" />
        <arg value="-DpomFile=@{pom}" />
        <arg value="-Dfile=@{file}" />
        <arg value="-Dpackaging=@{packaging}" />
        <artifact.args />
        <arg value="-Pgpg" />
      </artifact:mvn>
    </sequential>
  </macrodef>

  <macrodef name="push.maven.jar">
    <attribute name="jar" />
    <attribute name="pom" />
    <attribute name="url" />
    <attribute name="repo.id" />
    <element name="artifact.args" implicit="true" optional="true" />
    <sequential>
      <echo message="Pushing JAR to Maven: @{jar} -> @{url}" />
      <push.maven.artifact file="@{jar}" pom="@{pom}" packaging="jar"
                           url="@{url}" repo.id="@{repo.id}">
      	<artifact.args />
      </push.maven.artifact>
    </sequential>
  </macrodef>

  <macrodef name="push.maven.pom">
    <attribute name="pom" />
    <attribute name="url" />
    <attribute name="repo.id" />
    <element name="artifact.args" implicit="true" optional="true" />
    <sequential>
      <echo message="Pushing POM to Maven: @{pom} -> @{url}" />
      <push.maven.artifact file="@{pom}" pom="@{pom}" packaging="pom"
                           url="@{url}" repo.id="@{repo.id}">
      	<artifact.args />
      </push.maven.artifact>
    </sequential>
  </macrodef>
	
  <macrodef name="push.junit.maven.artifact">
    <attribute name="url" />
    <attribute name="repo.id" />
    <attribute name="is.snapshot" default="true" />
    <sequential>
      <local name="m.prefix" />
      <property name="m.prefix" value="${dist}/junit-dep-${version}" />
      <local name="m.jar" />
      <property name="m.jar" value="${m.prefix}.jar" />
      <local name="m.sources.jar" />
      <property name="m.sources.jar" value="${m.prefix}-src.jar" />
      <local name="m.javadoc.jar" />
      <property name="m.javadoc.jar" value="${m.prefix}-javadoc.jar" />
      <local name="m.pom" />
      <property name="m.pom" value="${dist}/pom-junit.xml" />

      <filter token="version" value="${version}" />
      <copy 
          file="build/maven/junit-pom-template.xml" 
          tofile="${m.pom}" 
          filtering="on"
          overwrite="true"
          />

      <push.maven.jar jar="${m.jar}" pom="${m.pom}" 
                      url="@{url}" repo.id="@{repo.id}" />
      
      <if>
        <equals arg1="@{is.snapshot}" arg2="false" />
        <then>
          <push.maven.jar jar="${m.sources.jar}" pom="${m.pom}"
                          url="@{url}" repo.id="@{repo.id}">
            <arg value="-Dclassifier=sources" />
          </push.maven.jar>
          <push.maven.jar jar="${m.javadoc.jar}" pom="${m.pom}"
                          url="@{url}" repo.id="@{repo.id}">
            <arg value="-Dclassifier=javadoc" />
          </push.maven.jar>
        </then>
      </if>
    </sequential>
  </macrodef>

  <macrodef name="push.junit-dep.maven.artifact">
    <attribute name="url" />
    <attribute name="repo.id" />
    <sequential>
      <local name="m.pom" />
      <property name="m.pom" value="${dist}/pom-junit-dep.xml" />

      <filter token="version" value="${version}" />
      <copy 
          file="build/maven/junit-dep-pom-template.xml" 
          tofile="${m.pom}" 
          filtering="on"
          overwrite="true"
          />

      <push.maven.pom pom="${m.pom}" 
                      url="@{url}" repo.id="@{repo.id}" />
    </sequential>
  </macrodef>

  <target name="stage.maven" depends="all.maven.jars">
    <property name="stage.url" 
              value="https://oss.sonatype.org/service/local/staging/deploy/maven2/" />
    <property name="stage.repo.id" value="sonatype-nexus-staging" />
    
    <push.junit.maven.artifact url="${stage.url}"
                               repo.id="${stage.repo.id}" 
                               is.snapshot="false" />
    <push.junit-dep.maven.artifact url="${stage.url}"
                                   repo.id="${stage.repo.id}" />
  </target>

  <target name="snapshot.maven" depends="all.maven.jars">
    <property name="snapshot.url" 
              value="https://oss.sonatype.org/content/repositories/snapshots/" />
    <property name="snapshot.repo.id" value="sonatype-nexus-snapshots" />
    
    <push.junit.maven.artifact url="${snapshot.url}"
                               repo.id="${snapshot.repo.id}" />
    <push.junit-dep.maven.artifact url="${snapshot.url}"
                                   repo.id="${snapshot.repo.id}" />
  </target>

  <target name="print.version">
    <echo message="${version}" />
  </target>
</project>
