<project name="Publish Build" default="default">

<!-- Properties that must be passed to this script:
	buildDirectory: Path to perform the build in.  (A working directory)
	buildType:		Type of build (nightly, integration etc.)
	buildId:		Build name
	buildLabel:		<buildType>-<buildName>-<timestamp>
-->
<property name="result" value="${buildDirectory}/${buildLabel}" />

<!--name of generated index page-->
<property name="indexFileName" value="index.html" />

<target name="default">
	<antcall target="countFiles" />
	<antcall target="generateIndex" />
	<antcall target="getStaticFiles" />
</target>
	
<target name="generateIndex">
 
  <property name="class" value="org.eclipse.releng.generators.TestResultsGenerator" />
  <taskdef name="indexResults" classname="${class}" />
   
<!--
	isBuildTested:  true|false  should JUnit plugin test results be used to generate index page
	dropTokenList:  comma separated list of strings which should be replaced by the fileName attribute settings in the testManifest.xml.
	xmlDirectoryName:  path to directory containing JUnit plugin test results in xml format (see doc is org.eclipse.test).
	dropDirectoryName: path to directory containing the result of the build.
	testResultsTemplateFileName:  path to template file used to generate page with links to JUnit test results	
	testResultsHtmlFileName:  name of file which will be generated with links to JUnit test results
	dropHtmlFileName:  name of generated index page
	hrefTestResultsTargetPath:  relative path from index page to directory containing JUnit html test results
	hrefCompileLogsTargetPath:  relative path from index page directory containing compilelogs
	testManifestFileName:	name of xml file containing descriptions of zip types and log files

	
	
-->
	
	<property name="xmlDirectoryName" value="${result}/testresults/xml" />
	<property name="dropDirectoryName" value="${result}" />
	<property name="testResultsTemplateFileName" value="${basedir}/templateFiles/testResults.php.template" />
	<property name="dropTemplateFileName" value="${basedir}/templateFiles/index.html.template" />
	<property name="testResultsHtmlFileName" value="testResults.php" />
	<property name="hrefTestResultsTargetPath" value="testresults/html" />
	<property name="hrefCompileLogsTargetPath" value="compilelogs" />
	<property name="compileLogsDirectoryName" value="${result}/compilelogs" />
	<property name="testManifestFileName" value="${basedir}/testManifest.xml" />

	
  <indexResults 
    isBuildTested="${isBuildTested}"
    buildType="${buildType}"
    dropTokenList="${dropTokenList}"
  	platformIdentifierToken="${platformIdentifierToken}"
  	platformSpecificTemplateList="${platformSpecificTemplateList}"
    dropHtmlFileName="${indexFileName}"
    xmlDirectoryName="${xmlDirectoryName}"
    dropDirectoryName="${dropDirectoryName}"
    testResultsTemplateFileName="${testResultsTemplateFileName}"
    dropTemplateFileName="${dropTemplateFileName}"
    testResultsHtmlFileName="${testResultsHtmlFileName}"
    hrefTestResultsTargetPath="${hrefTestResultsTargetPath}"
    hrefCompileLogsTargetPath="${hrefCompileLogsTargetPath}"
    compileLogsDirectoryName="${compileLogsDirectoryName}"
    testManifestFileName="${testManifestFileName}"
  />

	<tstamp>
		<format property="TODAY" pattern="MMMM d, yyyy"/>
	</tstamp>
	
  	<!--  Insert Build Type descriptor  -->
  	<antcall target="${buildType}" />
  	
  	<!--  Insert Build Date  -->
	<replace file="${result}/${indexFileName}" token="@date@" value="${TODAY}"/>
	<replace dir="${result}" value="${TODAY}">
	  <include name="**/*.php"/>
	  <replacetoken><![CDATA[@date@]]></replacetoken>
	</replace>
	
  	<!--  Insert Build Name  -->
	<replace file="${result}/${indexFileName}" token="@build@" value="${buildId}"/>
	<replace dir="${result}" value="${buildId}">
	  <include name="**/*.php"/>
	  <replacetoken><![CDATA[@build@]]></replacetoken>
	</replace>


  	<!--  Update timestamp on file to permit overwrite through Ant copy task  -->
	<touch file="${result}/${indexFileName}" />
	<touch>
	    <fileset dir="${result}">
	    	<include name="**/*.php"/>
	    </fileset>
	</touch>
		
</target>


<target name="getStaticFiles">
	<!--get static files required in the buildLabel directory-->
	<copy todir="${result}">
		<fileset dir="staticDropFiles" />
	</copy>
	
	<!--copy buildnotes from plugin directories-->
	<mkdir dir="${result}/buildnotes" />
	<copy todir="${result}/buildnotes" flatten="true">
		<fileset dir="${buildDirectory}/plugins" includes="**/buildnotes_*.html" />
	</copy>
</target>

<target name="countFiles">
<!--	files.count is a file that should exist in the drop directory with a count of the zip files in the same directory.
		It is required to generate a link to the build on the downloads page.
 -->
 <taskdef name="countFiles" classname="org.eclipse.releng.generators.FileCounter" />
 
	<countFiles 
		sourceDirectory="${result}"
		filterString=".zip,.tar.gz"
		outputFile="${result}/files.count"
	/>
	
</target>

<!--Build type descriptors-->
<target name="I">
	<replace file="${result}/${indexFileName}" token="@type@" value="Integration"/>
	<replace dir="${result}" value="Integration">
	  <include name="**/*.php"/>
	  <replacetoken><![CDATA[@type@]]></replacetoken>
	</replace>
</target>
	
<target name="N">
	<replace file="${result}/${indexFileName}" token="@type@" value="Nightly"/>
	<replace dir="${result}" value="Nightly">
	  <include name="**/*.php"/>
	  <replacetoken><![CDATA[@type@]]></replacetoken>
	</replace>
</target>
	
<target name="M">
	<replace file="${result}/${indexFileName}" token="@type@" value="Maintenance"/>
	<replace dir="${result}" value="Maintenance">
	  <include name="**/*.php"/>
	  <replacetoken><![CDATA[@type@]]></replacetoken>
	</replace>
</target>

<target name="R">
	<replace file="${result}/${indexFileName}" token="@type@" value="Release"/>
	<replace dir="${result}" value="Release">
	  <include name="**/*.php"/>
	  <replacetoken><![CDATA[@type@]]></replacetoken>
	</replace>
</target>
	
<target name="S">
	<replace file="${result}/${indexFileName}" token="@type@" value="Stable"/>
	<replace dir="${result}" value="Stable">
	  <include name="**/*.php"/>
	  <replacetoken><![CDATA[@type@]]></replacetoken>
	</replace>
</target>

<target name="T">
	<replace file="${result}/${indexFileName}" token="@type@" value="Test"/>
	<replace dir="${result}" value="Test">
	  <include name="**/*.php"/>
	  <replacetoken><![CDATA[@type@]]></replacetoken>
	</replace>
</target>
	
</project>