<?xml version='1.0'?>
<!--

 Licensed 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 default="javasources" name="Ant task examples">
  <description>
    A few examples of using the Ant task, for more examples see the
    AntUnit tests
  </description>

  <property name="src-dir" location="apache-rat-core/src/main/java"/>
  <property name="version" value="0.7-SNAPSHOT"/>
  <property name="core-jar"
            location="apache-rat-core/target/apache-rat-core-${version}.jar"/>
  <property name="src-jar"
            location="apache-rat-core/target/apache-rat-core-${version}-sources.jar"/>

  <target name="javasources" depends="-taskdef"
    description="runs the tasks over RAT's source tree excluding the license directory">
    <rat:report xmlns:rat="antlib:org.apache.rat.anttasks">
      <fileset dir="${src-dir}">
        <exclude name="rat/license/"/>
      </fileset>
    </rat:report>
  </target>

  <target name="jar" depends="-taskdef"
    description="runs the task over RAT's source tree">
    <rat:report xmlns:rat="antlib:org.apache.rat.anttasks">
      <zipfileset src="${src-jar}"/>
    </rat:report>
  </target>

  <target name="tarball" depends="-taskdef"
    description="creates a tarball of RAT's source tree and runs the task over the tarball">
    <tar destfile="ratsrc.tar.gz" compression="gzip">
      <fileset dir="${src-dir}"/>
    </tar>
    <rat:report xmlns:rat="antlib:org.apache.rat.anttasks">
      <tarfileset>
        <gzipresource>
          <file file="ratsrc.tar.gz"/>
        </gzipresource>
      </tarfileset>
    </rat:report>
    <delete file="ratsrc.tar.gz"/>
  </target>

  <target name="javasources-w3c" depends="-taskdef"
    description="runs the tasks over RAT's source tree accepting only the W3C license">
    <rat:report xmlns:rat="antlib:org.apache.rat.anttasks"
      addDefaultLicenseMatchers="false">
      <fileset dir="${src-dir}"/>

      <rat:w3c/>

    </rat:report>
  </target>

  <target name="url" depends="-taskdef"
    description="runs the task on the ASF's homepage">
    <rat:report xmlns:rat="antlib:org.apache.rat.anttasks">
      <url url="http://www.apache.org/"/>
    </rat:report>
  </target>

  <target name="run-on-rat" depends="-taskdef">
    <rat:report xmlns:rat="antlib:org.apache.rat.anttasks">
      <fileset dir="."/>
    </rat:report>
  </target>

  <target name="run-on-rat-output-xml" depends="-taskdef"
          description="Runs RAT on its own source tree and creates an XML report">
    <rat:report xmlns:rat="antlib:org.apache.rat.anttasks"
                format="xml" reportFile="rat-report.xml">
      <fileset dir="."/>
    </rat:report>
  </target>

  <target name="run-on-rat-output-styled" depends="-taskdef"
          description="Runs RAT on its own source tree and creates a report using XSLT">
    <rat:report xmlns:rat="antlib:org.apache.rat.anttasks"
                format="styled" reportFile="rat-report.txt">
      <stylesheet>
        <file file="apache-rat-core/src/main/resources/org/apache/rat/plain-rat.xsl"/>
      </stylesheet>
      <fileset dir="."/>
    </rat:report>
  </target>

  <target name="restrict" depends="-taskdef"
          description="Run RAT on all files in this source tree that have been modified today">
    <tstamp/>
    <rat:report xmlns:rat="antlib:org.apache.rat.anttasks">
      <restrict>
        <fileset dir="."/>
        <date when="after" datetime="${DSTAMP}" pattern="yyyyMMdd"/>
      </restrict>
    </rat:report>
  </target>

  <target name="-taskdef">
    <typedef resource="org/apache/rat/anttasks/antlib.xml"
             uri="antlib:org.apache.rat.anttasks">
      <classpath>
        <fileset dir=".">
           <include name="**/apache-rat*.jar"/>
           <include name="**/commons-*.jar"/>
        </fileset>
      </classpath>
    </typedef>
  </target>
</project>
