<project name="Build specific targets and properties" default="noDefault">

    <property name="builder" location="." />

    <!-- ===================================================================== -->
    <!-- Run a given ${target} on all elements being built -->
    <!-- Add on <ant> task for each top level element being built. -->
    <!-- ===================================================================== -->
    <available property="allElementsFile" file="${builder}/allElements.xml" value="${builder}/allElements.xml" />
    <property name="allElementsFile" location="${eclipse.pdebuild.templates}/headless-build/allElements.xml" />

    <import file="${allElementsFile}" />
    <target name="allElements">
        <antcall target="allElementsDelegator" />
    </target>

    <!-- ===================================================================== -->
    <!-- ===================================================================== -->
    <target name="getBaseComponents" depends="checkLocalBase" unless="skipBase">
        <get src="${eclipseBaseURL}" dest="${buildDirectory}/../temp-base.zip" />
        <unzip dest="${base}" overwrite="true" src="${buildDirectory}/../temp-base.zip" />
    </target>

    <target name="checkLocalBase">
        <available file="${base}" property="skipBase" />
    </target>

    <!-- ===================================================================== -->
    <!-- Check out map files from correct repository -->
    <!-- Replace values for mapsCheckoutTag as desired. -->
    <!-- ===================================================================== -->
    <target name="getMapFiles" depends="checkLocalMaps" unless="skipMaps">
        <property name="mapsCheckoutTag" value="HEAD" />
        <cvs cvsRoot="${mapsRepo}" package="${mapsRoot}" dest="${buildDirectory}/maps" tag="${mapsCheckoutTag}" />
    </target>

    <target name="checkLocalMaps">
        <available property="skipMaps" file="${buildDirectory}/maps" />
    </target>

    <target name="tagMapFiles" if="tagMaps">
        <cvs dest="${buildDirectory}/maps/${mapsRoot}" command="tag ${mapsTagTag}" />
    </target>

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

    <target name="clean" unless="noclean">
        <antcall target="allElements">
            <param name="target" value="cleanElement" />
        </antcall>
    </target>

    <target name="gatherLogs">
        <mkdir dir="${buildDirectory}/${buildLabel}/compilelogs" />
        <antcall target="allElements">
            <param name="target" value="gatherLogs" />
        </antcall>
        <unzip dest="${buildDirectory}/${buildLabel}/compilelogs" overwrite="true">
            <fileset dir="${buildDirectory}/features">
                <include name="**/*.log.zip" />
            </fileset>
        </unzip>
    </target>

    <!-- ===================================================================== -->
    <!-- Steps to do before setup -->
    <!-- ===================================================================== -->
    <target name="preSetup">
    </target>

    <!-- ===================================================================== -->
    <!-- Steps to do after setup but before starting the build proper -->
    <!-- ===================================================================== -->
    <target name="postSetup">
        <antcall target="getBaseComponents" />
    </target>

    <!-- ===================================================================== -->
    <!-- Steps to do before fetching the build elements -->
    <!-- ===================================================================== -->
    <target name="preFetch">
    </target>

    <!-- ===================================================================== -->
    <!-- Steps to do after fetching the build elements -->
    <!-- ===================================================================== -->
    <target name="postFetch">
    </target>

    <!-- ===================================================================== -->
    <!-- Steps to do before generating the build scripts. -->
    <!-- ===================================================================== -->
    <target name="preGenerate">
        <echo message="Replacing feature and plugin versions to be: ${version.full}" />
        <!--FIXME Handle when old version number is not 0.9.7.1! -->
        <replaceregexp match="Bundle-Version:(.*)" replace="Bundle-Version: ${version.full}" byline="true">
            <fileset dir="${buildDirectory}" includes="plugins/**/META-INF/MANIFEST.MF" />
        </replaceregexp>
        
        <replaceregexp match='org.python.pydev;bundle-version="(.*)"' replace='org.python.pydev;bundle-version="${version.full}"' byline="true">
            <fileset dir="${buildDirectory}" includes="plugins/**/META-INF/MANIFEST.MF" />
        </replaceregexp>

        <replaceregexp file="${buildDirectory}/features/org.python.pydev.feature/feature.xml" match='version="(.*)"' replace='version="${version.full}"' byline="true" />
            
        <replaceregexp file="${buildDirectory}/plugins/org.python.pydev/src/org/python/pydev/plugin/PydevPlugin.java" match='public static final String version =(.*)"' replace='public static final String version ="${version.full}"' byline="true" />
        <replaceregexp file="${buildDirectory}/plugins/com.python.pydev/src/com/python/pydev/PydevPlugin.java" match='public static final String version =(.*)"' replace='public static final String version ="${version.full}"' byline="true" />
    </target>

    <!-- ===================================================================== -->
    <!-- Steps to do after generating the build scripts. -->
    <!-- ===================================================================== -->
    <target name="postGenerate">
        <antcall target="clean" />
    </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 running package. -->
    <!-- ===================================================================== -->
    <target name="prePackage">
    </target>

    <!-- ===================================================================== -->
    <!-- Steps to do after  running package. -->
    <!-- ===================================================================== -->
    <target name="postPackage">
    </target>

    <!-- ===================================================================== -->
    <!-- Steps to do after the build is done. -->
    <!-- ===================================================================== -->
    <target name="postBuild">
        <antcall target="signJars" />
        <antcall target="gatherLogs" />
        <antcall target="updateSite" />
        <antcall target="publish" />
    </target>
	
    
    <target name="signJars" if="is.sign_jars">
        <echo message="Signing plugins and features at: ${p2.repo.dir}" />
        <signjar 
            alias="${KEYSTORE_ALIAS}" keystore="${KEYSTORE}"
            storepass="${STOREPASS}"
            preservelastmodified="true">
          <path>
            <fileset dir="${p2.repo.dir}/plugins" includes="**/*.jar" />
            <fileset dir="${p2.repo.dir}/features" includes="**/*.jar" />
          </path>
        </signjar>
	</target>

    <target name="updateSite">
        <copy file="${builder}/site.xml" tofile="${p2.repo.dir}/site.xml" />
        <replace token="{version.full}" value="${version.full}" file="${p2.repo.dir}/site.xml" />
    	
    	
    	
        <zip destfile="${p2.repo.dir}/org.python.pydev.feature-${version.full}.zip">
            <fileset dir="${p2.repo.dir}" defaultexcludes="false" excludes="**/**org.python.pydev.django_templates**"/>
        </zip>
    	
    	
    	
        <copy file="${builder}/index.html" tofile="${p2.repo.dir}/index.html" />
        <replace token="ZIP_FILE_PYDEV" value="org.python.pydev.feature-${version.full}.zip" file="${p2.repo.dir}/index.html" />
        

    </target>

    <!-- ===================================================================== -->
    <!-- Steps to do to test the build results -->
    <!-- ===================================================================== -->
    <target name="test">
    </target>

    <!-- ===================================================================== -->
    <!-- Steps to do to publish the build results -->
    <!-- ===================================================================== -->
    <target name="publish">
        <delete dir="${deploy.dir}" failonerror="true" />
        <mkdir dir="${deploy.dir}" />
        <copy todir="${deploy.dir}" failonerror="true">
            <fileset dir="${p2.repo.dir}" />
        </copy>
        
       <zip 
            destfile="${deploy.dir}/org.python.pydev-${version.full}-sources.zip" 
            basedir="${buildDirectory}" 
            includes="features/**, plugins/**" 
            excludes="**/temp.folder/**,**/bin/**,**/emails_to_announce.txt,**/*.jpage,**/cachedir,**/*.indexcache,**/*.pyc,**/*.class,**/out/**,**/org.python.pydev.releng/**,**/com.python.pydev.docs/**,**/com.python.pydev.runalltests/**,**/org.python.pydev.runalltests/**,**/org.python.pydev.site/**,**/**.jar.args,.settings,**/**pydev.jar,**/**parser.jar,**/**pydev-jython.jar,**/**refactoring.jar,**/**pydev-debug.jar,**/**analysis.jar,**/**core.jar,**/**customizations.jar,**/**codecompletion.jar,**/**fastparser.jar,**/**ast.jar"
            filesonly="true">
           
        </zip>
    </target>

    <!-- ===================================================================== -->
    <!-- Default target                                                        -->
    <!-- ===================================================================== -->
    <target name="noDefault">
        <echo message="You must specify a target when invoking this file" />
    </target>

</project>
