<?xml version="1.0"?>

<!--
  =======================================================================
   Use Apache Ant to generate a patch file for Apache Ant.

   Copyright (c) 2003 The Apache Software Foundation.  All rights
   reserved.

  =======================================================================
-->
<project name="create-patch" default="patchpackage" basedir=".">
    <property environment="env"/>
    <property name="patch.package" value="patch.tar.gz"/>
    <property name="patch.file" value="patch.txt"/>

    <condition property="cvs.found">
        <or>
            <available file="cvs" filepath="${env.PATH}"/>
            <available file="cvs.exe" filepath="${env.PATH}"/>
            <available file="cvs.exe" filepath="${env.Path}"/>
        </or>
    </condition>

    <target name="createpatch">
        <fail unless="cvs.found"
              message="You need a version of cvs to create the patch"/>
        <cvs command="-q diff -u" output="${patch.file}"/>
    </target>

    <target name="newfiles" depends="createpatch">
        <delete file="${patch.package}"/>
        <cvs command="-q diff -N" output="${patch.file}.tmp"/>
        <replace file="${patch.file}.tmp" token="? " value=""/>
        <tstamp>
            <format property="year" pattern="yyyy"/>
        </tstamp>
        <fileset dir="${basedir}"
            includesfile="${patch.file}.tmp"
            excludes="${patch.file}.tmp,${patch.file}"
            id="no.copyright.set">
            <not>
                <and>
                    <contains text="Copyright"/>
                    <contains text="Apache Software Foundation"/>
                    <contains text="${year}"/>
                </and>
            </not>
        </fileset>
        <pathconvert pathsep="${line.separator}"
            setonempty="false"
            property="no.copyright"
            refid="no.copyright.set"/>
        <fail if="no.copyright"
            message="Please assign the Apache Ant Copyright (for ${year}) to these files and retry:${line.separator}${no.copyright}"/>
    </target>

    <target name="patchpackage" depends="newfiles">
        <tar basedir="${basedir}"
            tarfile="${patch.package}"
            compression="gzip"
            includesfile="${patch.file}.tmp"
            excludes="${patch.file}.tmp"/>
        <delete file="${patch.file}.tmp"/>
    </target>
</project>
