<!--
   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="Build specific targets and properties" default="noDefault">
    <condition property="isNightlyBuild">
        <equals arg1="${buildType}" arg2="N" />
    </condition>
    <condition property="isNightlyOrIntegrationBuild">
        <or>
            <equals arg1="${buildType}" arg2="N" />
            <equals arg1="${buildType}" arg2="I" />
        </or>
    </condition>
    
    <property file="${buildHome}/pluginbuilder.config" />
    
    <property file="${buildDirectory}/version.properties" />
    <property name="buildLabel" value="${buildType}-${version.full}" />
    <property name="buildId" value="${version.full}" />
    
    <condition property="isCVSOrCopy" value="true">
        <or>
            <equals arg1="${pluginbuilder.is.cvs}" arg2="true"/>
            <equals arg1="${pluginbuilder.is.copy}" arg2="true"/>
        </or>
    </condition>
    <condition property="isSVN" value="true">
        <equals arg1="${pluginbuilder.is.svn}" arg2="true"/>
    </condition>
    <condition property="isRunTests" value="true">
        <equals arg1="${pluginbuilder.is.runtests}" arg2="true"/>
    </condition>
    
    
    <target name="allElements">
        <condition property="isFetch" value="true">
            <equals arg1="${target}" arg2="fetchElement"/>
        </condition>
        <condition property="is.svn.fetch" value="true">
            <and>
                <equals arg1="${target}" arg2="fetchElement"/>
                <equals arg1="${pluginbuilder.is.svn}" arg2="true"/>
            </and>
        </condition>
    
        <antcall target="allElementsExceptSvnFetch"/>
        <antcall target="fetchSubversion"/>
    </target>
    
    <import file="allElements.xml"/>
    <import file="subversionSupport.xml"/>
    
    
    <!-- ===================================================================== -->
    <!-- Check out map files from correct repository -->
    <!-- Replace values for cvsRoot, package and mapVersionTag as desired. -->
    <!-- ===================================================================== -->
    <target name="getMapFiles" if="isCVSOrCopy">
        <echo message="Copying map files."/>
        <copy todir="${buildDirectory}/maps">
            <fileset dir="${buildHome}/maps" includes="*.map"></fileset>
        </copy>
    </target>
    
    <!-- ===================================================================== -->
    <!-- Steps to do before setup -->
    <!-- ===================================================================== -->
    <target name="preSetup">    
    </target>
    <!-- ===================================================================== -->
    <!-- Steps to do after setup but before starting the build proper -->
    <!-- ===================================================================== -->
    <target name="postSetup">
    </target>
    <!-- ===================================================================== -->
    <!-- Steps to do before fetching the build elements -->
    <!-- ===================================================================== -->
    <target name="preFetch">
    </target>
    <!-- ===================================================================== -->
    <!-- Steps to do after fetching the build elements -->
    <!-- ===================================================================== -->
    <target name="postFetch">
        <condition property="is.fetch" value="true">
            <available file="${buildDirectory}/plugins"/>
        </condition>
        <fail unless="is.fetch" message="There was no plug-in fetched. Was the configuration generated? Is the repository correct?"/>
        <antcall target="replaceVersions"/>     
    </target>
    
    <target name="replaceVersions">
        <fail unless="version.full" message="Property version.full must be set" />
        <fail unless="version.qualifier" message="Property version.qualifier must be set" />
    
        <echo message="Updating versions in feature and plugin manifests. Full version: ${version.full}, qualifier: ${version.qualifier}"/>
        <replaceregexp
            match="(&lt;feature[^&gt;]*version=)&quot;0.0.0&quot;"
            replace="\1&quot;${version.full}&quot;"
            byline="false"
            flags="s">
              <fileset dir="${buildDirectory}/features" includes="**/feature.xml"/>
        </replaceregexp>
        <replaceregexp
            match="(&lt;feature[^&gt;]*version=&quot;.*)qualifier&quot;"
            replace="\1${version.qualifier}&quot;"
            byline="false"
            flags="s">
              <fileset dir="${buildDirectory}/features" includes="**/feature.xml"/>
        </replaceregexp>
        <!-- in a manual build started with export from the feature.xml, there is no
            need to replace the versions in the plugin.xml files if they are set to 0.0.0,
            but here it needs to be -->
        <replace dir="${buildDirectory}/plugins">
            <include name="**/plugin.xml"/>
            <replacefilter token="0.0.0" value="${version.full}" />
        </replace>
        <replace dir="${buildDirectory}/plugins">
            <include name="**/META-INF/MANIFEST.MF"/>
            <replacefilter token="Bundle-Version: 0.0.0" value="Bundle-Version: ${version.full}" />
            <replacefilter token="qualifier" value="${version.qualifier}" />
        </replace>  
    </target>   
    <!-- ===================================================================== -->
    <!-- Steps to do before generating the build scripts. -->
    <!-- ===================================================================== -->
    <target name="preGenerate">
        <!-- fail unless="featureVersion" message="Property featureVersion must be set.
         Either directly or in case of a nightly build with nightlyBuildFeatureVersionPrefix." />
         -->
    </target>
    <!-- ===================================================================== -->
    <!-- Steps to do after generating the build scripts. -->
    <!-- ===================================================================== -->
    <target name="postGenerate">
    </target>
    <!-- ===================================================================== -->
    <!-- Steps to do before running the build.xmls for the elements being built. -->
    <!-- ===================================================================== -->
    <target name="preProcess">
    </target>
    <!-- ===================================================================== -->
    <!-- Steps to do after running the build.xmls for the elements being built. -->
    <!-- ===================================================================== -->
    <target name="postProcess">
    </target>
    <!-- ===================================================================== -->
    <!-- Steps to do before running assemble. -->
    <!-- ===================================================================== -->
    <target name="preAssemble">
    </target>
    <!-- ===================================================================== -->
    <!-- Steps to do after  running assemble. -->
    <!-- ===================================================================== -->
    <target name="postAssemble">
    </target>
    <!-- ===================================================================== -->
    <!-- Steps to do before/after packaging RCP. -->
    <!-- ===================================================================== -->
    <target name="prePackage">
    </target>
    
    <target name="postPackage">
        <!-- copy build results for rcp build -->
        <copy todir="${buildResultsDirectory}" flatten="true">
            <fileset dir="${buildDirectory}" includes="${buildType}-**/*.zip" />
        </copy>
    </target>

    <!-- ===================================================================== -->
    <!-- Steps to do after the build is done. -->
    <!-- ===================================================================== -->
    <property name="buildResultsDirectory" value="${buildDirectory}/results" />
    <target name="postBuild" depends="-prepareBuildResultsDirectory" unless="no.postBuild">
        <antcall target="runTests"/>
        <copy todir="${buildResultsDirectory}" flatten="true">
            <fileset dir="${buildDirectory}" includes="${buildType}-**/*.zip" />
        </copy>
        <condition property="is.External.Postbuild">
            <available file="${buildHome}/build-files/postBuild.xml"/>
        </condition>
        <antcall target="callExternalPostBuild"/>
    </target>
    <!-- ===================================================================== -->
    <!-- Run tests. -->
    <!-- ===================================================================== -->
    <target name="runTests" if="isRunTests">
        <property name="automatedTestsHome" location="${buildHome}/build-files/automatedTests"/>

        <ant antfile="${automatedTestsHome}/run-tests.xml" target="run" dir="${automatedTestsHome}">
            <property name="test.result.dir" value="${buildResultsDirectory}/testresults"/>
        </ant>
    </target>   
    <!--======================================================-->
    <!-- Gather build results  -->
    <!-- ==================================================== -->
    <target name="-prepareBuildResultsDirectory">
        <echo message="Creating ${buildResultsDirectory}" />
        <mkdir dir="${buildResultsDirectory}" />    
    </target>

    <!--======================================================-->
    <!-- Call External post build file if available -->
    <!-- ==================================================== -->
    <target name="callExternalPostBuild" if="is.External.Postbuild">
        <ant antfile="${buildHome}/build-files/postBuild.xml"/>
    </target>
    
    <target name="noDefault">
        <echo message="You must specify a target when invoking this file" />
    </target>
</project>
