<?xml version="1.0"?>
<!--
   Licensed to the Apache Software Foundation (ASF) under one or more
   contributor license agreements.  See the NOTICE file distributed with
   this work for additional information regarding copyright ownership.
   The ASF licenses this file to You under the Apache License, Version 2.0
   (the "License"); you may not use this file except in compliance with
   the License.  You may obtain a copy of the License at

       http://www.apache.org/licenses/LICENSE-2.0

   Unless required by applicable law or agreed to in writing, software
   distributed under the License is distributed on an "AS IS" BASIS,
   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   See the License for the specific language governing permissions and
   limitations under the License.
-->
<project name="common" xmlns:ivy="antlib:org.apache.ivy.ant">

  <dirname property="common.basedir" file="${ant.file.common}"/>
  <import file="${common.basedir}/common-tasks.xml"/>
  
  <available property="with.ivy" file="ivy.xml"/>

  <target name="setup-properties">
    <!-- load optional antlib specific configuration -->
    <property file="build.properties"/>
    <!--load in an optional file containing versions of things-->
    <property file="version.properties"/>
    
    <!-- load common configuration -->
    <property file="${common.basedir}/build.properties"/>
    
    <!--load in a file containing versions of ant
      and other libraries-->
    <property file="${ant.home}/lib/libraries.properties"/>

    <!-- javac properties -->
    <property name="javac.test-source" value="${javac.-source}"/>
    <property name="javac.test-target" value="${javac.-target}"/>

    <tstamp>
      <format property="artifact.publication.datetime" pattern="yyyyMMddHHmmss"/>
    </tstamp>
  </target>

  <target name="setup" depends="setup-properties">
    <mkdir dir="${build.classes}"/>
    <mkdir dir="${build.testclasses}"/>
    <mkdir dir="${build.lib}"/>
    <copy file="${common.basedir}/style.css" todir="docs"/>
  </target>

  <!--Milestones to extend or override-->
  <target name="ready-to-compile" depends="setup"/>
  <target name="ready-to-test-with-junit" depends="compile-tests"/>
  <target name="ready-to-test-with-antunit" depends="setup-for-antunit-tests"/>
  <target name="ready-to-package" depends="compile"/>
  <target name="ready-to-distribute" depends="antlib"/>
  <target name="package" depends="checksum-target-jar"
       description="Package everything up"/>

  <target name="compile" depends="setup,resolve">
    <javac 
      srcdir="src/main"
      destdir="${build.classes}"
      debug="${javac.debug}"
      source="${javac.-source}"
      target="${javac.-target}"
      includeantruntime="true"
      classpathref="classpath.compile"
      />
  </target>

  <target name="check-for-NOTICE">
    <available file="NOTICE" property="notice-present?"/>

    <fail unless="notice-present?">You must create a product specific
    NOTICE file based on common/NOTICE.template in the top level
    directory</fail>
  </target>

  <target name="antlib" depends="compile, check-for-NOTICE">
    <copy todir="${build.classes}">
      <fileset dir="src/main" includes="**/*.xml,**/*.properties"/>
    </copy>
    <jar destfile="${jarname}">
      <fileset dir="${build.classes}"/>
      <metainf file="NOTICE"/>
      <metainf file="${common.basedir}/LICENSE"/>
    </jar>
  </target>

  <target name="checksum-target-jar"
          description="checksum our jar" depends="antlib">
    <checksums>
      <file file="${target.jar}"/>
    </checksums>
  </target>
  
  <target name="determine-test-types">
    <condition property="skip-junit">
      <not>
        <available file="${src.junit}"/>
      </not>
    </condition>
    <condition property="skip-antunit">
      <not>
        <available file="${src.antunit}"/>
      </not>
    </condition>
  </target>

  <target name="setup-for-junit-tests" depends="setup,determine-test-types"
    unless="skip-junit">
    <available classname="junit.framework.TestCase" property="junit-present?"/>    
    <fail unless="junit-present?">The JUnit library is not present.</fail>
            
    <available classname="org.apache.tools.ant.BuildFileTest"
      property="testutil-present?"
      ignoresystemclasses="true"
      classpath="${ant-testutil.jar}"/>

    <fail unless="testutil-present?">Expected to find ant-testutil.jar
    in ${ant-testutil.jar}, please set the property ant-testutil.jar
    to the correct location.</fail>
  </target>

  <target name="setup-for-antunit-tests" depends="setup,determine-test-types"
    unless="skip-antunit">
    <available classname="org.apache.ant.antunit.AntUnit"
      property="antunit-present?"/>

    <fail unless="antunit-present?">The AntUnit Ant library is not present.</fail>
  </target>

  <target name="compile-tests" depends="setup-for-junit-tests, antlib, resolve"
    unless="skip-junit">
    <javac 
      srcdir="${src.junit}"
      destdir="${build.testclasses}"
      debug="${javac.debug}"
      source="${javac.test-source}"
      target="${javac.test-target}"
      >
      <classpath>
        <pathelement location="${jarname}"/>
        <pathelement location="${ant-testutil.jar}"/>
        <path refid="classpath.test"/>
      </classpath>
    </javac>
    <copy todir="${build.testclasses}">
      <fileset dir="${src.junit}" includes="**/*.xml,**/*.properties"/>
    </copy>
  </target>

  <target name="junit-test" depends="ready-to-test-with-junit,resolve"
    unless="skip-junit">
    <mkdir dir="${junit.report.dir}"/>
    <junit
      printsummary="false"
      haltonfailure="false"
      failureproperty="junit.tests.failed"
      filtertrace="false"
      fork="${junit.fork}"
      forkmode="${junit.forkmode}"
      includeantruntime="true"
      >
      <classpath>
        <pathelement location="${jarname}"/>
        <pathelement location="${ant-testutil.jar}"/>
        <pathelement location="${build.testclasses}"/>
        <path refid="classpath.test"/>
      </classpath>

      <batchtest todir="${junit.report.dir}">
        <fileset dir="${src.junit}"/>
      </batchtest>

      <formatter type="xml"/>
      <formatter type="plain" usefile="false"/>
    </junit>
  </target>

  <target name="antunit-test" depends="ready-to-test-with-antunit,resolve"
    unless="skip-antunit">
    <condition property="antunit.includes" value="${antunit.testcase}"
               else="**/test.xml,**/*-test.xml">
      <isset property="antunit.testcase" />
    </condition>

    <property name="antunit.excludes" value="" />

    <mkdir dir="${antunit.report.dir}" />
    <au:antunit xmlns:au="antlib:org.apache.ant.antunit"
      failOnError="false"
      errorProperty="antunit.tests.failed"
      >
      <fileset dir="${src.antunit}" includes="${antunit.includes}"
               excludes="${antunit.excludes}" />

      <au:xmllistener todir="${antunit.report.dir}" />
      <au:plainlistener/>
    </au:antunit>
  </target>

  <target name="test" depends="junit-test, antunit-test">
    <fail if="junit.tests.failed">At least one JUnit test has failed.</fail>
    <fail if="antunit.tests.failed">At least one AntUnit test has failed.</fail>
  </target>

  <target name="clean" depends="setup-properties">
    <delete dir="${build}"/>
    <delete dir="${dist.base}"/>
    <delete dir="${dist.name}"/>
    <delete dir="${bin.dist.dir}"/>
    <delete dir="${src.dist.dir}"/>
  </target>

  <target name="javadoc_check">
    <uptodate property="javadoc.notrequired"
              targetfile="${build.javadoc}/package-list">
      <srcfiles dir="src/main" includes="**/*.java,**/*.html"/>
    </uptodate>
  </target>

  <target name="javadoc" depends="setup-properties, javadoc_check"
          description="--> creates the API documentation"
          unless="javadoc.notrequired">
    <mkdir dir="${build.javadoc}"/>
    <javadoc useexternalfile="yes"
             maxmemory="1000M"	
             destdir="${build.javadoc}"
             version="true"
             locale="en"
             windowtitle="${artifact.name} API"
             doctitle="${artifact.name}"
             failonerror="true"
             verbose="false">
      <packageset dir="src/main"/>
      <classpath>
        <path refid="classpath.compile"/>
        <fileset dir="${ant.home}/lib" includes="*.jar"/>
      </classpath>
    </javadoc>
  </target>

  <!--copy the target to the destination. Only allowed if the tests pass!-->

  <target name="install" depends="test">
    <copy file="${jarname}" todir="${ant.home}/lib"/>
  </target>  

  <import file="${common.basedir}/m2.xml"/>
  <import file="${common.basedir}/ivy.xml"/>

  <target name="src-dist" depends="m2-pom,ivy.xml"
    description="--> creates a source distribution">

    <mkdir dir="${src.dist.dir}"/>
    <copy todir="${src.dist.dir}">
      <fileset dir=".">
        <include name="src/"/>
        <include name="common/"/>
        <include name="docs/"/>
        <include name="README"/>
        <include name="INSTALL"/>
        <include name="NOTICE"/>
        <include name="TODO"/>
        <include name="changes.xml"/>
        <include name="contributors.xml"/>
        <include name="build.xml"/>
        <include name="version.properties"/>
        <include name="build.properties"/>
        <include name="ivy.xml"/>
        <include name="project-template.pom"/>
      </fileset>
      <fileset dir="common">
        <include name="LICENSE"/>
      </fileset>
      <fileset file="${target.pom}"/>
    </copy>

    <fixcrlf srcdir="${src.dist.dir}" eol="dos" includes="*.bat,*.cmd"/>
    <fixcrlf srcdir="${src.dist.dir}" eol="unix">
      <include name="**/*.sh"/>
      <include name="**/*.pl"/>
    </fixcrlf>
    <fixcrlf srcdir="${src.dist.dir}">
      <include name="**/*.java"/>
    </fixcrlf>

    <antcall target="create-readable-documents">
      <param name="dest.dir" value="${src.dist.dir}"/>
    </antcall>
  </target>

  <target name="bin-dist" depends="checksum-target-jar,m2-pom,ivy.xml,javadoc">
    <mkdir dir="${bin.dist.dir}"/>

    <copy todir="${bin.dist.dir}">
      <fileset dir=".">
        <include name="docs/"/>
        <include name="README"/>
        <include name="INSTALL"/>
        <include name="NOTICE"/>
        <include name="TODO"/>
        <include name="changes.xml"/>
        <include name="contributors.xml"/>
      </fileset>
      <fileset dir="common">
        <include name="LICENSE"/>
      </fileset>
      <fileset file="${jarname}*"/>
      <fileset file="${target.pom}"/>
    </copy>
    <copy todir="${bin.dist.dir}/javadoc">
      <fileset dir="${build.javadoc}"/>
    </copy>
    <copy todir="${bin.dist.dir}/" includeemptydirs="false">
      <fileset dir="src">
        <include name="etc/"/>
        <exclude name="etc/testcases/"/>
      </fileset>
    </copy>
    <antcall target="create-readable-documents">
      <param name="dest.dir" value="${bin.dist.dir}"/>
    </antcall>
  </target>

  <target name="distribution" description="creates a complete distribution"
    depends="ready-to-distribute">

    <mkdir dir="${dist.base.binaries}"/>
    <mkdir dir="${dist.base.source}"/>

    <!--delete dir="${java-repository.dir}"/-->
    <!--mkdir dir="${java-repository.dir}"/-->

    <delete dir="${dist.name}"/>
    <antcall target="bin-dist" inheritall="false">
      <param name="bin.dist.dir" value="${dist.name}"/>
    </antcall>

    <zip destfile="${dist.base.binaries}/${dist.name}-bin.zip">
      <zipfileset dir="${dist.name}/.." filemode="755">
        <include name="${dist.name}/bin/*.pl"/>
        <include name="${dist.name}/bin/*.py"/>
      </zipfileset>
      <fileset dir="${dist.name}/..">
        <include name="${dist.name}/**"/>
        <exclude name="${dist.name}/bin/*.pl"/>
        <exclude name="${dist.name}/bin/*.py"/>
      </fileset>
    </zip>
    <tar longfile="gnu"
      destfile="${dist.base.binaries}/${dist.name}-bin.tar">
      <tarfileset dir="${dist.name}/.." mode="755" username="ant" group="ant">
        <include name="${dist.name}/bin/*.pl"/>
        <include name="${dist.name}/bin/*.py"/>
      </tarfileset>
      <tarfileset dir="${dist.name}/.." username="ant" group="ant">
        <include name="${dist.name}/**"/>
        <exclude name="${dist.name}/bin/*.pl"/>
        <exclude name="${dist.name}/bin/*.py"/>
      </tarfileset>
    </tar>
    <gzip destfile="${dist.base.binaries}/${dist.name}-bin.tar.gz"
      src="${dist.base.binaries}/${dist.name}-bin.tar"/>
    <bzip2 destfile="${dist.base.binaries}/${dist.name}-bin.tar.bz2"
      src="${dist.base.binaries}/${dist.name}-bin.tar"/>
    <delete file="${dist.base.binaries}/${dist.name}-bin.tar"/>

    <!--copy todir="${java-repository.dir}">
      <fileset dir="${dist.name}/lib">
        <include name="ant*.jar"/>
      </fileset>
      <mapper type="glob" from="*.jar" to="*-${version}.jar"/>
    </copy>
    <checksums>
      <fileset dir="${java-repository.dir}" includes="*${version}.jar"/>
    </checksums-->

    <checksums>
      <fileset dir="${dist.base.binaries}/">
        <include name="**/*"/>
        <exclude name="**/*.asc"/>
        <exclude name="**/*.md5"/>
        <exclude name="**/*.sha1"/>
        <exclude name="**/*.sha512"/>
      </fileset>
    </checksums>

    <delete dir="${dist.name}"/>
    <antcall target="src-dist" inheritall="false">
      <param name="src.dist.dir" value="${dist.name}"/>
    </antcall>

    <zip destfile="${dist.base.source}/${dist.name}-src.zip">
      <fileset dir="${dist.name}/..">
        <include name="${dist.name}/**"/>
      </fileset>
    </zip>
    <tar longfile="gnu"
      destfile="${dist.base.source}/${dist.name}-src.tar">
      <tarfileset dir="${dist.name}/.." username="ant" group="ant">
        <include name="${dist.name}/**"/>
      </tarfileset>
    </tar>
    <gzip destfile="${dist.base.source}/${dist.name}-src.tar.gz"
      src="${dist.base.source}/${dist.name}-src.tar"/>
    <bzip2 destfile="${dist.base.source}/${dist.name}-src.tar.bz2"
      src="${dist.base.source}/${dist.name}-src.tar"/>
    <delete file="${dist.base.source}/${dist.name}-src.tar"/>
    <delete dir="${dist.name}"/>
    <checksums>
      <fileset dir="${dist.base.source}/">
        <include name="**/*"/>
        <exclude name="**/*.asc"/>
        <exclude name="**/*.md5"/>
        <exclude name="**/*.sha1"/>
        <exclude name="**/*.sha512"/>
      </fileset>
    </checksums>
  </target>

  <target name="check-contributors">
    <available property="contributors.file.exists?"
      file="contributors.xml"/>
  </target>

  <target name="check-changes">
    <available property="changes.file.exists?"
      file="changes.xml"/>
  </target>

  <target name="style-contributors" depends="check-contributors"
    if="contributors.file.exists?">
    <xslt style="${common.basedir}/stylesheets/contributors.xsl" in="contributors.xml"
      out="${dest.dir}/CONTRIBUTORS"/>
  </target>

  <target name="style-changes" depends="check-changes"
    if="changes.file.exists?">
    <xslt style="${common.basedir}/stylesheets/changes2whatsnew.xsl" in="changes.xml"
      out="${dest.dir}/WHATSNEW"/>
    <xslt style="${common.basedir}/stylesheets/changes2readmehtml.xsl" in="changes.xml"
      out="${dest.dir}/README.html"/>
  </target>

  <target name="create-readable-documents"
    depends="style-contributors,style-changes"/>

  <!-- uploading of releases -->
  <import file="${common.basedir}/upload.xml"/>

  <target name="prepare-upload" depends="bin-dist">
    <property name="upload.dir"
              value="${build.javarepository}/org.apache.ant/${artifact.name}/${artifact.version}"/>
    <mkdir dir="${upload.dir}"/>
    <copy file="${jarname}" todir="${upload.dir}"/>
    <copy file="${target.pom}" todir="${upload.dir}"/>
    <copy file="${target.ivy.xml}" todir="${upload.dir}"/>
    <jar destfile="${upload.dir}/${artifact.stub}-sources.jar">
      <fileset dir="src/main"/>
      <metainf file="NOTICE"/>
      <metainf file="${common.basedir}/LICENSE"/>
    </jar>
    <jar destfile="${upload.dir}/${artifact.stub}-javadoc.jar">
      <fileset dir="${build.javadoc}"/>
      <metainf file="NOTICE"/>
      <metainf file="${common.basedir}/LICENSE"/>
    </jar>
  </target>

  <target name="check-sigs" depends="prepare-upload">
    <uptodate property="jar.sig.ok"
              srcfile="${upload.dir}/${artifact.stub}.jar"
              targetfile="${upload.dir}/${artifact.stub}.jar.asc"/>
    <uptodate property="pom.sig.ok"
              srcfile="${upload.dir}/${artifact.stub}.pom"
              targetfile="${upload.dir}/${artifact.stub}.pom.asc"/>
    <uptodate property="sources.sig.ok"
              srcfile="${upload.dir}/${artifact.stub}-sources.jar"
              targetfile="${upload.dir}/${artifact.stub}-sources.jar.asc"/>
    <uptodate property="javadoc.sig.ok"
              srcfile="${upload.dir}/${artifact.stub}-javadoc.jar"
              targetfile="${upload.dir}/${artifact.stub}-javadoc.jar.asc"/>
    <uptodate property="ivy.sig.ok"
              srcfile="${upload.dir}/${artifact.stub}-ivy.xml"
              targetfile="${upload.dir}/${artifact.stub}-ivy.xml.asc"/>
    <fail message="Your OpenPGP signature of the artifacts is too old or missing">
      <condition>
        <not>
          <and>
            <isset property="jar.sig.ok"/>
            <isset property="pom.sig.ok"/>
            <isset property="sources.sig.ok"/>
            <isset property="javadoc.sig.ok"/>
            <isset property="ivy.sig.ok"/>
          </and>
        </not>
      </condition>
    </fail>
  </target>

  <target name="upload" depends="check-sigs,perform-nexus-upload"/>

  <!-- "fat" binary distributions with dependencies -->
  <import file="${common.basedir}/fetch.xml"/>

  <target name="fat-distribution"
          description="creates a complete binary distribution with dependencies"
          depends="distribution,fetch-dependencies">

    <unzip src="${dist.base.binaries}/${dist.name}-bin.zip"
           dest="."/>

    <copy todir="${dist.name}">
      <fileset dir="${build.deps}"/>
    </copy>

    <zip destfile="${dist.base.binaries}/${dist.name}-bin-withdeps.zip">
      <zipfileset dir="${dist.name}/.." filemode="755">
        <include name="${dist.name}/bin/*.pl"/>
        <include name="${dist.name}/bin/*.py"/>
      </zipfileset>
      <fileset dir="${dist.name}/..">
        <include name="${dist.name}/**"/>
        <exclude name="${dist.name}/bin/*.pl"/>
        <exclude name="${dist.name}/bin/*.py"/>
      </fileset>
    </zip>
    <tar longfile="gnu"
      destfile="${dist.base.binaries}/${dist.name}-bin-withdeps.tar">
      <tarfileset dir="${dist.name}/.." mode="755" username="ant" group="ant">
        <include name="${dist.name}/bin/*.pl"/>
        <include name="${dist.name}/bin/*.py"/>
      </tarfileset>
      <tarfileset dir="${dist.name}/.." username="ant" group="ant">
        <include name="${dist.name}/**"/>
        <exclude name="${dist.name}/bin/*.pl"/>
        <exclude name="${dist.name}/bin/*.py"/>
      </tarfileset>
    </tar>
    <gzip destfile="${dist.base.binaries}/${dist.name}-bin-withdeps.tar.gz"
      src="${dist.base.binaries}/${dist.name}-bin-withdeps.tar"/>
    <bzip2 destfile="${dist.base.binaries}/${dist.name}-bin-withdeps.tar.bz2"
      src="${dist.base.binaries}/${dist.name}-bin-withdeps.tar"/>
    <delete file="${dist.base.binaries}/${dist.name}-bin-withdeps.tar"/>

    <checksums>
      <fileset dir="${dist.base.binaries}/">
        <include name="**/*-withdeps*"/>
        <exclude name="**/*.asc"/>
        <exclude name="**/*.md5"/>
        <exclude name="**/*.sha1"/>
        <exclude name="**/*.sha512"/>
      </fileset>
    </checksums>

    <delete dir="${dist.name}"/>
  </target>
  
</project>
