<?xml version="1.0" encoding="iso-8859-1"?>

<project name="site" default="dev" basedir=".">

<available file="/home/y/bin/gmake" property="php.ext.make" value="/home/y/bin/gmake"/>
<available file="/usr/bin/gmake" property="php.ext.make" value="/usr/bin/gmake"/>

<!-- Yahoo developer (dev) build -->
<target name="dev" description="developer build"
	depends="dev.lite,php.ext">
	<version.yicf versiondir=""/>
</target>

<!-- target dev.lite skip the building of PHP extension -->
<target name="dev.lite" description="developer build"
	depends="load.default.properties,build.webapps">
	<!-- for dev build, replace the token without versioning -->
	<replace dir="${dir.webapps}/intl">
		<replacefilter token="@local_static_src@" value="${token.local_static_src}"/>
		<replacefilter token="@external_static_src@" value="${token.local_static_src}"/>
	</replace>
	<create.status version="${version.major}.${version.minor}.${build.number}"/>
</target>

<target name="pro" description="production build"
	depends="load.default.properties,php.ext,build.webapps">
	<buildnumber/>
	<property file="${basedir}/build.number"/>
	<version.static.src versiondir="/${version.major}_${version.minor}_${build.number}"/>
	<create.status version="${version.major}.${version.minor}.${build.number}"/>
</target>

<target name="clean" description="clean build"
	depends="load.default.properties,clean.php.ext,clean.webapps,clean.yala.gen"/>

<target name="load.default.properties">
	<property file="${basedir}/ant.default.properties"/>
</target>

<target name="php.ext">
	<echo message="Building PHP extension"/>
	<exec executable="${php.ext.make}" dir="${dir.src}/ext" failonerror="true"/>
</target>

<target name="clean.php.ext">
	<exec executable="${php.ext.make}" dir="${dir.src}/ext" failonerror="true">
		<arg value="clean"/>
	</exec>
</target>

<target name="build.webapps"
	depends="copy.site,generate.directories.for.intls,replace.tokens"/>

<target name="clean.webapps">
	<delete dir="${dir.webapps}" failonerror="true" />
</target>

<target name="clean.yala.gen">
	<delete dir="${dir.yala.gen}" failonerror="true" />
</target>

<target name="copy.site">
	<mkdir dir="${dir.webapps}"/>

	<!-- Copy the static directories -->
	<copy todir="${dir.webapps}/js" preservelastmodified="yes">
		<fileset dir="${dir.site}/js"/>
	</copy>
	<copy todir="${dir.webapps}/img" preservelastmodified="yes">
		<fileset dir="${dir.site}/img"/>
	</copy>
	<copy todir="${dir.webapps}/css" preservelastmodified="yes">
		<fileset dir="${dir.site}/css"/>
	</copy>
	<copy todir="${dir.webapps}/swf" preservelastmodified="yes">
		<fileset dir="${dir.site}/swf"/>
	</copy>

	<!-- Copy crossdomain.xml -->
	<copy file="${dir.site}/xml/crossdomain.xml" todir="${dir.webapps}/intl"/>
</target>

<target name="generate.directories.for.intls" depends="copy.site">
	<!-- Copy templates to all intls -->
	<generate.intl.directory intl="${dev.intl}"/>
</target>

<macrodef name="generate.intl.directory">
	<attribute name="intl" />
	<sequential>
		<generate.templates.per.intl intl="@{intl}"/>
	</sequential>
</macrodef>

<macrodef name="generate.templates.per.intl">
	<attribute name="intl" />
	<sequential>
		<echo message="Creating build directory and copying shared templates for intl: intl = @{intl}"/>
		<copy todir="${dir.webapps}/intl/@{intl}" preservelastmodified="yes">
			<fileset dir="${dir.site}/php"/>
		</copy>

		<antcall target="yala.gen">
			<param name="intl" value="@{intl}"/>
		</antcall>
		<antcall target="copy.intl.templates">
			<param name="intl" value="@{intl}"/>
		</antcall>
	</sequential>
</macrodef>

<target name="copy.intl.templates" depends="copy.site">
	<echo message="Copying localized templates for intl: intl = ${intl}"/>
	<copy todir="${dir.webapps}/intl/${intl}" preservelastmodified="yes">
		<fileset dir="${dir.yala.gen}/${intl}/php" />
	</copy>
</target>

<target name="yala.gen" depends="copy.site">
	<echo message="Generating localized templates for intl: intl = ${intl}"/>
	<exec executable="${dir.yala.home}/yala_gen.pl" failonerror="true">
		<arg value="-exitonerror" />
		<arg value="${yala.db}" />
		<arg value="${intl}" />
		<arg value="${dir.site}/templates/generic_intl/all" />
		<arg value="${dir.yala.gen}" />
		<arg value="${dir.yala.gen}" />
	</exec>
</target>

<target name="replace.tokens" depends="copy.site,generate.directories.for.intls">
	<replace dir="${dir.webapps}/intl">
		<replacefilter token="@spaceid@" value="${token.spacerid}"/>
		<replacefilter token="@lineid@" value="${token.lineid}"/>
		<replacefilter token="@version@" value="${token.version}.${build.number}"/>
	</replace>
</target>

<macrodef name="create.status">
	<attribute name="version" />
	<sequential>
		<tstamp>
			<format property='build.time' pattern="MM/dd/yyyy hh:mm aa"/>
		</tstamp>
		<echo file="${dir.webapps}/intl/status.html" append="false">OK
Version: @{version}
Build Date: ${build.time}
</echo>
	</sequential>
</macrodef>

<macrodef name="version.static.src">
	<attribute name="versiondir" />
	<sequential>
		<mkdir dir="${dir.webapps}@{versiondir}"/>
		<move todir="${dir.webapps}@{versiondir}/js">
			<fileset dir="${dir.webapps}/js"/>
		</move>
		<move todir="${dir.webapps}@{versiondir}/img">
			<fileset dir="${dir.webapps}/img"/>
		</move>
		<move todir="${dir.webapps}@{versiondir}/css">
			<fileset dir="${dir.webapps}/css"/>
		</move>
		<move todir="${dir.webapps}@{versiondir}/swf">
			<fileset dir="${dir.webapps}/swf"/>
		</move>
		<replace dir="${dir.webapps}/intl">
			<replacefilter token="@local_static_src@" value="${token.local_static_src}@{versiondir}"/>
			<replacefilter token="@external_static_src@" value="${token.external_static_src}"/>
		</replace>
		<version.yicf versiondir="@{versiondir}"/>
	</sequential>
</macrodef>

<macrodef name="version.yicf">
	<attribute name="versiondir" />
	<sequential>
		<copy file="${dir.src}/conf/me2u.yicf" tofile="${dir.src}/conf/me2u_gen.yicf" overwrite="true"/>
		<replace file="${dir.src}/conf/me2u_gen.yicf">
			<replacefilter token="@version_dir@" value="@{versiondir}"/>
		</replace>
	</sequential>
</macrodef>

</project>
