<?xml version="1.0"?>

<!-- 
	Demo Apache Ant Build File. 
	Builds, backups and uploads to FTP debug and release versions of the Flex project.
	
	Author: Rostisla Siryk
	http://flash-ripper.com/
-->

<project default="build" basedir=".">

	<property name="build.number.major" value="1.0" />
	<property name="build.version.as3.file" value="./src/fm/model/Version.as" />
	
	<property name="build.target.dir" value="./bin-release/ftp/" />
	
	<property name="copy.build.files.dir.builds" value="../FM_source/app/builds" />
	<property name="copy.build.files.dir" value="../FM_source/app" />
	
	<property name="debug.swf.path.fp9" value="./bin-release/ftp/debug/fm.swf" />
	<property name="debug.swf.path.fp10" value="./bin-release/ftp/debug/fm_10.swf" />

	<property name="release.swf.path.fp9" value="./bin-release/ftp/release/fm.swf" />
	<property name="release.swf.path.fp10" value="./bin-release/ftp/release/fm_10.swf" />
	
	<property name="compiler.mxmlc.path" value="C:\Program Files\Adobe\Flex Builder 3\sdks\3.3.0.4852\bin\mxmlc.exe" />
	
	<property name="compiler.mxmlc.config.fp9.debug" value="./build-configs/mxml-config-fm-fp9-debug.xml" />
	<property name="compiler.mxmlc.config.fp10.debug" value="./build-configs/mxml-config-fm-fp10-debug.xml" />
	<property name="compiler.mxmlc.config.fp9.release" value="./build-configs/mxml-config-fm-fp9-release.xml" />
	<property name="compiler.mxmlc.config.fp10.release" value="./build-configs/mxml-config-fm-fp10-release.xml" />

	<property name="compiler.mxmlc.args.fp9.debug" value="-load-config+=${compiler.mxmlc.config.fp9.debug} ./src/fm.mxml -output ${debug.swf.path.fp9}" />
	<property name="compiler.mxmlc.args.fp10.debug" value="-load-config+=${compiler.mxmlc.config.fp10.debug} ./src/fm.mxml -output ${debug.swf.path.fp10}" />
	<property name="compiler.mxmlc.args.fp9.release" value="-load-config+=${compiler.mxmlc.config.fp9.release} ./src/fm.mxml -output ${release.swf.path.fp9}" />
	<property name="compiler.mxmlc.args.fp10.release" value="-load-config+=${compiler.mxmlc.config.fp10.release} ./src/fm.mxml -output ${release.swf.path.fp10}" />
	
	<property name="test.web.browser.path.firefox" value="C:\Program Files\Mozilla Firefox\3.0\firefox.exe" />
	<property name="test.web.browser.path.safari" value="C:\Program Files\Safari\Safari.exe" />
	<property name="test.web.browser.path" value="${test.web.browser.path.safari}" />
	
	<property name="test.url.remote.release" value="-url http://demo.fm.myserver.com/" />
	<property name="test.url" value="${test.url.remote.release}" />

	<!-- COMPILE DEBUG VERSIONS --> 
	<!-- target name="build" depends="updatebuildnumber, compile.fp9.debug, compile.fp10.debug" / -->
	
	<!-- 1) debug. COMPILE DEBUG VERSIONS, COPY AND UPLOAD IT --> 
	<!-- target name="build" depends="updatebuildnumber, compile.fp9.debug, compile.fp10.debug, copy.build.files.debug, ftp.upload.debug" / -->
	
	<!-- COMPILE DEBUG VERSIONS, UPLOAD AND TEST IT --> 
	<!-- target name="build" depends="updatebuildnumber, compile.fp9.debug, compile.fp10.debug, ftp.upload.debug, test.in.browser" / -->
	
	<!-- COMPILE RELEASE VERSION --> 
	<!-- target name="build" depends="updatebuildnumber, compile.fp9.release, compile.fp10.release" / -->

	<!-- 2) release. COMPILE RELEASE VERSION, COPY AND FTP IT --> 
	<target name="build" depends="updatebuildnumber, compile.fp9.release, compile.fp10.release, copy.build.files.release, ftp.upload.release" />

	<!-- RELEASE FTP --> 
	<!-- target name="build" depends="ftp.upload.release" / -->

	<!-- COPY FILES FOR BACKUP SVN DEPLOY -->
	<target name="copy.build.files.debug" depends="copy.build.to.svn.debug, copy.build.number.previous" />
	<target name="copy.build.files.release" depends="copy.build.to.svn.release, copy.build.number.previous" />

	<target name="build.number.increment" >
		<buildnumber file="build.number"/>
	</target>
	
	<target name="updatebuildnumber">
		<buildnumber file="build.number"/>
		<replaceregexp 
			byline="true" 
			file="${build.version.as3.file}" 
			match="versionIdMinor: int = .*;"
			replace="versionIdMinor: int = ${build.number};" />
		<!-- versionId: String = "0.2.67 "; -->
		<echo message="Building fm v. ${build.number.major}.${build.number}" /> 
    </target>
	
	<target name="compile.fp9.release">
    	<exec executable="${compiler.mxmlc.path}" >
    		<arg line="${compiler.mxmlc.args.fp9.release}" />
    	</exec>
	</target>
	<target name="compile.fp10.release">
    	<exec executable="${compiler.mxmlc.path}" >
    		<arg line="${compiler.mxmlc.args.fp10.release}" />
    	</exec>
	</target>
	
	
	<target name="compile.fp9.debug">
    	<exec executable="${compiler.mxmlc.path}" >
    		<arg line="${compiler.mxmlc.args.fp9.debug}" />
    	</exec>
	</target>
	<target name="compile.fp10.debug">
    	<exec executable="${compiler.mxmlc.path}" >
    		<arg line="${compiler.mxmlc.args.fp10.debug}" />
    	</exec>
	</target>
	
    <target name="copy.build.to.svn.debug" >
    	<!-- BACKUP COPY -->
		<copy todir="${copy.build.files.dir.builds}/debug/${build.number}" flatten="true" verbose="true">
			<fileset dir="${build.target.dir}/debug"/>
		</copy>
		<copy file="build.number.prev" tofile="${copy.build.files.dir.builds}/debug/${build.number}/build.number" />

		<!-- MOST RECENT -->
		<copy todir="${copy.build.files.dir}" flatten="true" verbose="true" overwrite="true" >
			<fileset dir="${build.target.dir}/debug"/>
		</copy>
		<copy file="build.number.prev" tofile="${copy.build.files.dir}/build.number" overwrite="true" />
	</target>
	
    <target name="copy.build.to.svn.release" >
    	<!-- BACKUP COPY -->
		<copy todir="${copy.build.files.dir.builds}/release/${build.number}" flatten="true" verbose="true">
			<fileset dir="${build.target.dir}/release"/>
		</copy>
		<copy file="build.number.prev" tofile="${copy.build.files.dir.builds}/release/${build.number}/build.number" />
		
		<!-- MOST RECENT -->
		<copy todir="${copy.build.files.dir}" flatten="true" verbose="true" overwrite="true" >
			<fileset dir="${build.target.dir}/release"/>
		</copy>
		<copy file="build.number.prev" tofile="${copy.build.files.dir}/build.number" overwrite="true" />
	</target>
	
    <target name="copy.build.number.previous" >
	    <copy file="build.number" tofile="build.number.prev" overwrite="true" />
    </target>
    
    <target name="ftp.upload.debug">
		<ftp server="demo.fm.myserver.com"
			userid="FTP_USER_ID"
			password="FTP_USER_PWD"
			remotedir="httpdocs/app"
			verbose="yes">
			
	    	<fileset dir="${build.target.dir}/debug"/>
		</ftp>
	</target>
	
    <target name="ftp.upload.release">
		<ftp server="demo.fm.myserver.com"
			userid="FTP_USER_ID"
			password="FTP_USER_PWD"
			remotedir="httpdocs/app"
			verbose="yes">

	    	<fileset dir="${build.target.dir}/release"/>
		</ftp>
	</target>
	
    <!-- target name="ftp.upload.build.number">
		<ftp server="demo.fm.myserver.com"
			userid="FTP_USER_ID"
			password="FTP_USER_PWD"
			remotedir="httpdocs/app"
			verbose="yes">
			<file name="build.number" />
	    	<fileset dir="${build.target.dir}/release"/>
		</ftp>
	</target -->
	
    <target name="test.in.browser">
    		<exec executable="${test.web.browser.path}" >
    		<arg line="${test.url}" />
    	</exec>
    </target>

</project>