<?xml version="1.0"?>

<!-- Smack Build Script ========================================== -->
<!-- Jive Software      ============================================== -->

<!--
    $RCSfile$
    $Revision$
    $Date$
-->

<project name="Smack Release Script" default="all" basedir="..">

    <!-- Include Ant Optional Tasks -->
    <taskdef resource="net/sf/antcontrib/antcontrib.properties">
        <classpath>
            <pathelement location="${basedir}/build/ant-contrib.jar"/>
        </classpath>
    </taskdef>

    <!-- PROPERTIES -->
    <!-- ======================================================================================= -->

    <!-- TARGETS -->
    <!-- ======================================================================================= -->

    <!-- all -->
    <!-- ======================================================================================= -->
    <target name="all">
        <!-- create release properties -->
        <if>
            <equals arg1="${dailybuild}" arg2="true" />
            <then>
                <tstamp>
                    <format property="build.date" pattern="yyyy-MM-dd" locale="en"/>
                </tstamp>
                <property name="release.name" value="smack-${build.date}" />
                <property name="release-dev.name" value="smack_src_${build.date}" />
            </then>
            <else>
                <property name="release.name" value="smack_${version.filename}" />
                <property name="release-dev.name" value="smack_src_${version.filename}" />
            </else>
        </if>
        <property name="release.dir" value="${basedir}/target/release/${release.name}" />
        <property name="release-dev.dir" value="${basedir}/target/release/${release-dev.name}" />
        <!-- create release dirs -->
        <mkdir dir="${release.dir}" />
        <mkdir dir="${release-dev.dir}" />
        <!-- Copy smack.jar -->
        <copy todir="${release.dir}">
            <fileset dir="${jar.dest.dir}" includes="smack.jar" />
            <fileset dir="${jar.dest.dir}" includes="smackx.jar" />
            <fileset dir="${jar.dest.dir}" includes="smackx-debug.jar" />
			<fileset dir="${jar.dest.dir}" includes="smackx-jingle.jar" />
        </copy>
        <copy todir="${release-dev.dir}">
            <fileset dir="${jar.dest.dir}" includes="smack.jar" />
            <fileset dir="${jar.dest.dir}" includes="smackx.jar" />
            <fileset dir="${jar.dest.dir}" includes="smackx-debug.jar" />
			<fileset dir="${jar.dest.dir}" includes="smackx-jingle.jar" />
        </copy>
        <!-- Copy build dir -->
        <copy todir="${release-dev.dir}/build">
            <fileset dir="${basedir}/build">
                <include name="ant*" />
                <include name="junit.jar" />
                <include name="build.xml" />
                <include name="README.html" />
                <include name="lib/*.jar" />
                <include name="merge/*.jar" />
                <include name="build/*.jar" />
            </fileset>
        </copy>
		<copy todir="${release-dev.dir}/jingle/extension/build">
            <fileset dir="${basedir}/jingle/extension/build">
                <include name="ant*" />
                <include name="junit.jar" />
                <include name="build.xml" />
                <include name="README.html" />
                <include name="lib/*.jar" />
                <include name="merge/*.jar" />
            </fileset>
        </copy>
        <!-- Copy Javadocs -->
        <copy todir="${release.dir}/javadoc">
            <fileset dir="${basedir}/target/javadoc" includes="**/*.*" />
        </copy>
        <copy todir="${release-dev.dir}/javadoc">
            <fileset dir="${basedir}/target/javadoc" includes="**/*.*" />
        </copy>
        <!-- Copy documentation -->
        <copy todir="${release.dir}/documentation">
            <fileset dir="${basedir}/documentation" includes="**/*.*" />
        </copy>
        <copy todir="${release-dev.dir}/documentation">
            <fileset dir="${basedir}/documentation" includes="**/*.*" />
        </copy>
        <!-- Copy source -->
        <copy todir="${release-dev.dir}/source">
            <fileset dir="${basedir}/source" includes="**/*.java" />
            <fileset dir="${basedir}/source" includes="**/*.html" />
        </copy>
        <copy todir="${release-dev.dir}/jingle/extension/source"> 
		    <fileset dir="${basedir}/jingle/extension/source" includes="**/*.java" />
            <fileset dir="${basedir}/jingle/extension/source" includes="**/*.html" />			
        </copy>
        <copy todir="${release-dev.dir}/test">
            <fileset dir="${basedir}/test" includes="**/*.java" />
        </copy>
        <!-- Copy resources -->
        <copy todir="${release-dev.dir}/build/resources">
            <fileset dir="${basedir}/build/resources" includes="META-INF/smack.providers" />
            <fileset dir="${basedir}/build/resources" includes="META-INF/smack-config.xml" />
        </copy>
        <copy todir="${release-dev.dir}/build/resources/images">
            <fileset dir="${basedir}/build/resources/images">
                <include name="*.png"/>
            </fileset>
        </copy>
        <!-- Copy readme.html and changelog.html -->
        <copy todir="${release.dir}">
            <fileset dir="${basedir}/build/resources/releasedocs" includes="*.html" />
            <filterset>
                <filter token="builddate" value="${builddate}"/>
                <filter token="version" value="${version}"/>
            </filterset>
        </copy>
        <copy todir="${release-dev.dir}">
            <fileset dir="${basedir}/build/resources/releasedocs" includes="*.html" />
            <filterset>
                <filter token="builddate" value="${builddate}"/>
                <filter token="version" value="${version}"/>
            </filterset>
        </copy>
        <!-- Package -->
        <if>
            <equals arg1="${dailybuild}" arg2="true" />
            <then>
                <zip destfile="${basedir}/target/release/${release-dev.name}.zip"
                    basedir="${release-dev.dir}/.."
                    includes="${release-dev.name}/**/*.*"
                />
                <tar destfile="${basedir}/target/release/${release-dev.name}.tar.gz"
                    basedir="${release-dev.dir}/.."
                    includes="${release-dev.name}/**/*.*"
                    compression="gzip"
                />
            </then>
            <else>
                <zip destfile="${basedir}/target/release/${release.name}.zip"
                    basedir="${release.dir}/.."
                    includes="${release.name}/**/*.*"
                />
                <tar destfile="${basedir}/target/release/${release.name}.tar.gz"
                    basedir="${release.dir}/.."
                    includes="${release.name}/**/*.*"
                    compression="gzip"
                />
                <zip destfile="${basedir}/target/release/${release-dev.name}.zip"
                    basedir="${release-dev.dir}/.."
                    includes="${release-dev.name}/**/*.*"
                />
                <tar destfile="${basedir}/target/release/${release-dev.name}.tar.gz"
                    basedir="${release-dev.dir}/.."
                    includes="${release-dev.name}/**/*.*"
                    compression="gzip"
                />
            </else>
        </if>

        <echo>
-----------------------------------------------
Release made, testing Ant targets of release...
-----------------------------------------------
        </echo>

        <!-- call the release tester -->
        <antcall target="test" />
    </target>

    <!-- test -->
    <!-- ======================================================================================= -->
    <target name="test">
        <property name="testdir" value="${release-dev.dir}/.test" />

        <!-- copy the build to a temp dir so we can run sanity tests -->
        <mkdir dir="${testdir}" />
        <copy todir="${testdir}">
            <fileset dir="${release-dev.dir}">
                <exclude name=".test/**/*.*" />
            </fileset>
        </copy>

        <!-- run sanity tests -->
        <ant dir="${testdir}" antfile="build/build.xml" target="jar" inheritAll="false">
            <property name="no.test" value="true" />
        </ant>
        <ant dir="${testdir}" antfile="build/build.xml" target="javadoc" inheritAll="false">
            <property name="no.test" value="true" />
        </ant>
        <ant dir="${testdir}" antfile="build/build.xml" target="clean" inheritAll="false">
            <property name="no.test" value="true" />
        </ant>

        <echo>
----------------------------
...release tests pass, done.
----------------------------
        </echo>
    </target>

</project>
