<project name='REXML' default='build-dist' basedir='.'>
  <property name='previous' value='1198'/>  <!-- Previous minor release -->
  <property name='last' value='844'/>       <!-- Last major release -->
  <!-- 3.1.0  993 -->
  <!-- 3.0.0  844 -->
  <!-- 2.7.0  806 -->
	

	<!-- Build the API docs -->
	<target name='api' depends='docs,properties'>
    <property file='version.txt'/>
		<filter token='ANT_VERSION' value='${tag}'/>
		<filter token='ANT_DATE' value='${date}'/>
		<delete dir='doc'/>
    <mkdir dir='temp'/>
    <copy todir='temp' filtering='true'> <fileset dir='src/rexml'/> </copy>
		<exec executable='rdoc'>
      <arg line='--main temp/rexml.rb --op doc --exclude .svn temp'/>
		</exec>
    <delete dir='temp'/>
	</target>


	<!-- Build the API doc archives -->
	<target name='api-dist' depends='api,properties'>
    <property file='version.txt'/>
		<!-- Make a distribution directory and copy the docs to it -->
		<mkdir dir='dist'/>
		<mkdir dir='dist/rexml_${tag}'/>
		<mkdir dir='dist/rexml_${tag}/doc'/>
		<copy todir='dist/rexml_${tag}/doc'> <fileset dir='doc'/> </copy>
		<tar tarfile='rexml_api_${tag}.tar' basedir='dist'/>
		<gzip zipfile='rexml_api_${tag}.tgz' src='rexml_api_${tag}.tar'/>
		<zip zipfile='rexml_api_${tag}.zip' basedir='dist'/>
		<delete dir='dist'/>
		<delete>
			<fileset dir='.' includes='*.tar'/>
		</delete>
	</target>


	<target name='dist.xml' depends='properties'>
    <property file='version.txt'/>
		<filter token='ANT_VERSION' value='${tag}'/>
		<filter token='ANT_DATE' value='${date}'/>
		<copy file='distributions/dist.xml' tofile='dist.xml' filtering='true'/>
	</target>


	<!-- Builds the distribution archive -->
	<target name='dist' depends='dist.xml,docs,api,properties'>
    <property file='version.txt'/>
		<mkdir dir='dist'/>
		<mkdir dir='dist/rexml_${tag}'/>
		<filter token='ANT_VERSION' value='${tag}'/>
		<filter token='ANT_DATE' value='${date}'/>
		<copy todir='dist/rexml_${tag}'>
			<fileset dir='.' excludes='**/.svn/**,*~'
				includes='benchmarks/**,contrib/**,docs/**,img/**,test/**'/>
		</copy>
		<copy todir='dist/rexml_${tag}' filtering='true'>
			<fileset dir='.' excludes='**/.svn/**,*~'
				includes='dist.xml,src/**,bin/**,*.txt,*.html,README,INSTALL'/>
		</copy>
		<copy todir='dist/rexml_${tag}'> 
			<fileset dir='.' includes='doc/**'/> 
		</copy>
		<tar tarfile='rexml_${tag}.tar' basedir='dist'/>
		<gzip zipfile='rexml_${tag}.tgz' src='rexml_${tag}.tar'/>
		<zip zipfile='rexml_${tag}.zip' basedir='dist'/>
		<delete dir='dist'/>
		<delete>
			<fileset dir='.' includes='*.tar'/>
		</delete>
	</target>


	<!-- Build the multi-paged documentation.  This downloads the XSL stylesheets
			from the repository (because ant's <style> task is too stupid to use
			URLs), generates the various pages, then deletes the style sheets. -->
	<target name='docs' depends='dist.xml'>
		<get dest='paged.xsl' usetimestamp='true'
			src='http://www.germane-software.com/repositories/public/documentation/paged.xsl'/>
		<copy todir='.' filtering='true'>
			<fileset dir='docs' includes='documentation.xml,tutorial.xml'/>
		</copy>

		<echo>Styling index...</echo>
		<exec executable="xsltproc" dir=".">
			<arg value='-o'/>
			<arg value='index.html'/>
			<arg value="paged.xsl"/>
			<arg value="documentation.xml"/>
		</exec>

		<echo>Styling tutorial...</echo>
		<exec executable="xsltproc" dir=".">
			<arg value='-o'/>
			<arg value='docs/tutorial.html'/>
			<arg value="paged.xsl"/>
			<arg value="tutorial.xml"/>
		</exec>

		<delete>
			<fileset dir='.' includes='paged.xsl,documentation.xml,tutorial.xml'/>
		</delete>
	</target>


	<target name='web' depends='docs,api,logs,properties'>
    <property file='version.txt'/>
		<delete dir='dist'/>
		<mkdir dir='dist'/>
		<mkdir dir='dist/img'/>
		<copy todir='dist/img' file='img/rexml.png'/>
		<copy todir='dist/img' file='img/rexml_50p.png'/>
		<filter token='ANT_VERSION' value='${tag}'/>
		<filter token='ANT_DATE' value='${date}'/>
		<copy todir='dist' overwrite='yes' filtering='true'>
			<fileset dir='.' includes='rss.xml,dist.xml,*.html,LICENSE.txt,GPL.txt'/>
		</copy>
		<copy todir='dist'>
      <fileset dir='.' includes='doc,docs/sloccount.txt,docs/tutorial.html,benchmarks/index.html'/>
		</copy>
    <copy todir='dist/doc'> <fileset dir='doc'/> </copy>
		<tar tarfile='web.tar' basedir='dist'/>
		<gzip zipfile='web.tgz' src='web.tar'/>
		<delete file='web.tar'/>
		<delete dir='dist'/>
	</target>


	<target name='clean'>
		<delete>
			<fileset dir='.' includes='dist.xml,*.tgz,*.zip,*.html,*~,version.txt'/>
		</delete>
		<delete> <fileset dir='doc'/> </delete>
    <delete>
      <fileset dir='docs' includes='credits.html,tutorial.html'/>
    </delete>
	</target>


	<!-- The main task.  We don't have to compile anything, so we just
			build a bunch of documentation and some distribution archives. -->
	<target name='build-dist' depends='api-dist,dist,docs,web'/>


  <target name='logs' depends='properties'>
    <property file='version.txt'/>
    <echo>Generating logs...</echo>
    <echo file='log.xml'><![CDATA[<log><previous>]]></echo>
        <exec executable='svn' output='log.xml' append='true'>
          <arg line='log --xml --incremental -r HEAD:${previous}'/>
        </exec>
        <echo file='log.xml' append='true'><![CDATA[</previous><last>]]></echo>
        <exec executable='svn' output='log.xml' append='true'>
          <arg line='log --xml --incremental -r ${previous}:${last}'/>
        </exec>
        <echo file='log.xml' append='true'><![CDATA[</last></log>]]></echo>

    <echo>Creating release document...</echo>
    <style in='log.xml' out='release.html' style='styles/release_html.xsl'>
      <param name='version' expression='${revision}'/>
      <param name='release' expression='${tag}'/>
      <param name='previous' expression='${previous}'/>
      <param name='last' expression='${last}'/>
    </style>

    <echo>Creating executive summary...</echo>
    <style in='log.xml' out='executive.txt' style='styles/executive.xsl'>
      <param name='version' expression='${revision}'/>
      <param name='release' expression='${tag}'/>
      <param name='previous' expression='${previous}'/>
      <param name='last' expression='${last}'/>
    </style>

    <echo>Creating RSS feed...</echo>
		<echo>Generating RSS...</echo>
		<exec executable="xsltproc" dir=".">
			<arg value='-o'/>
			<arg value='rss.xml'/>
      <arg value="styles/rss.xsl"/>
      <arg value="docs/documentation.xml"/>
		</exec>

    <echo>Cleaning up...</echo>
    <delete><fileset dir='.' includes='log.xml'/></delete>
  </target>


  <target name='properties'>
    <exec executable='ruby' output='version.txt'>
      <arg line='bin/info.rb'/>
    </exec>
  </target>

</project>
