<?xml version="1.0"?>
<!--/*******************************************************************************
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License v1.0 and Eclipse Distribution License v. 1.0
* which accompanies this distribution.
* The Eclipse Public License is available at http://www.eclipse.org/legal/epl-v10.html
* and the Eclipse Distribution License is available at
* http://www.eclipse.org/org/documents/edl-v10.php.
*
*   Ant naming conventions:
*   - regardless of the actual OS platform,'/' is the directory separator
*     (Ant will convert as appropriate).
*   - multi-word properties use periods '.'
*     - properties ending in .jar define jarfile names only (no path)
*     - properties ending in .lib are fully qualified jars (path and filename)
*     - properties ending in .dir are directory paths
*     - properties ending in .path are path refid names (classpath fragments)
*   - multi-word targets use hyphens '-'
*     - targets beginning with test- are reserved for high level test targets,
*       and are used in test results parsing
*     - targets typically use the form <action>-<object>-<type> (ie. package-bundle-zip)
*   - multi-word macros use underscores '_'
*   - multi-word macro attributes are concatinated
*     e.g. 'runpathref'
*   - multi-word tasks (taskdef) names are concatinated
*     e.g. 'validateconnection'
*   - OS environment variables are in ALLCAPS and have 'env' as a prefix
*     e.g. ${env.XXX}.
*   - Ant properties are lower case.
*
* Contributors:
*     egwin    - initial implementation
#******************************************************************************/-->
<project name="eclipselink.archive.releases" default="generate-archives" basedir=".">
    <available file="../updates" type="dir" property="updates.is.local"/>
    <!-- fail message="Not running from 'updates' directory." unless="updates.is.local"/ -->

    <target name="init" >
        <dirname  property="build.location_temp" file="${ant.file.eclipselink.archive.releases}"/>
        <pathconvert targetos="unix" property="build.location">
            <path>
                <pathelement location="${build.location_temp}"/>
            </path>
        </pathconvert>
        <echo message="build.location = '${build.location}'"/>

        <!-- property name="custom.tasks.lib" value="${build.location}/ant_customizations.jar"/>
        <property name="custom.say.task.class" value="org.eclipse.persistence.buildtools.ant.taskdefs.Say"/>
        <taskdef name="say" classname="${custom.say.task.class}" classpath="${custom.tasks.lib}"/ -->

        <property name="1.1.2" value="1.1.2.v20090612-r4475"/>
        <property name="1.1.3" value="1.1.3.v20091002-r5404"/>
        <property name="1.1.4" value="1.1.4.v20100812-r7860"/>
        <property name="2.0.1" value="2.0.1.v20100213-r6600"/>
        <property name="2.0.2" value="2.0.2.v20100323-r6872"/>
        <property name="2.1.0" value="2.1.0.v20100614-r7608"/>
        <property name="2.1.1" value="2.1.1.v20100817-r8050"/>
        <property name="2.1.2" value="2.1.2.v20101206-r8635"/>
        <property name="2.1.3" value="2.1.3.v20110304-r9073"/>
        <property name="2.2.0" value="2.2.0.v20110202-r8913"/>
        <property name="2.2.1" value="2.2.1.v20110722-r9776"/>
        <property name="2.3.0" value="2.3.0.v20110604-r9504"/>
        <property name="2.3.1" value="2.3.1.v20111018-r10243"/>
        <property name="2.3.2" value="2.3.2.v20111125-r10461"/>
        <property name="2.3.3" value="2.3.3.v20120629-r11760"/>
        <property name="2.4.0" value="2.4.0.v20120608-r11652"/>
        <property name="2.4.1" value="2.4.1.v20121003-ad44345"/>
        <property name="2.5.0" value="2.5.0.v20130507-3faac2b"/>
    </target>

    <target name="archive-p2-child" if="${release}.ready">
        <echo message="Creating archive '${release}.zip' of p2 child '${release}'..."/>
        <delete file="${release}.zip" failonerror="false"/>
        <zip destfile="${release}.zip">
            <zipfileset dir="${release}">
                <include name="**/*"/>
            </zipfileset>
        </zip>
    </target>
    
    <target name="skip-p2-child" unless="${release}.ready">
        <echo message="'${release}.ready' not set. Skipping archival of '${release}'."/>
    </target>

    <target name="generate-archives" depends="init">
        <check_release releaseProperty="1.1.2"/>
        <check_release releaseProperty="1.1.3"/>
        <check_release releaseProperty="1.1.4"/>
        <check_release releaseProperty="2.0.1"/>
        <check_release releaseProperty="2.0.2"/>
        <check_release releaseProperty="2.1.0"/>
        <check_release releaseProperty="2.1.1"/>
        <check_release releaseProperty="2.1.2"/>
        <check_release releaseProperty="2.1.3"/>
        <check_release releaseProperty="2.2.0"/>
        <check_release releaseProperty="2.2.1"/>
        <check_release releaseProperty="2.3.0"/>
        <check_release releaseProperty="2.3.1"/>
        <check_release releaseProperty="2.3.2"/>
        <check_release releaseProperty="2.3.3"/>
        <check_release releaseProperty="2.4.0"/>
        <check_release releaseProperty="2.4.1"/>
        <check_release releaseProperty="2.5.0"/>
    </target>

    <macrodef name="check_release">
        <!-- release is the property name of the release -->
        <attribute name="releaseProperty"/>
        <sequential>
            <echo message=" "/>
            <echo message="Checking Release: @{releaseProperty} is '${@{releaseProperty}}'"/>
            <condition property="${@{releaseProperty}}.ready">
                <and>
                    <available file="${build.location}/${@{releaseProperty}}" type="dir"/>
                    <not>
                        <available file="${build.location}/${@{releaseProperty}}.zip"/>
                    </not>
                </and>
            </condition>
            <!-- say message="Calling 'archive-p2-child' for '${@{releaseProperty}}' (Ready)"         if="${@{releaseProperty}}.ready"/>
            <say message="Calling 'archive-p2-child' for '${@{releaseProperty}}' (Not-Ready)" unless="${@{releaseProperty}}.ready"/ -->
            <antcall target="archive-p2-child">
                <param name="release" value="${@{releaseProperty}}"/>
            </antcall>
        </sequential>
    </macrodef>


</project>
