<?xml version="1.0"?>
<!--

  Licensed to the Apache Software Foundation (ASF) under one or more
  contributor license agreements.  See the NOTICE file distributed with
  this work for additional information regarding copyright ownership.
  The ASF licenses this file to You under the Apache License, Version 2.0
  (the "License"); you may not use this file except in compliance with
  the License.  You may obtain a copy of the License at

      http://www.apache.org/licenses/LICENSE-2.0

  Unless required by applicable law or agreed to in writing, software
  distributed under the License is distributed on an "AS IS" BASIS,
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  See the License for the specific language governing permissions and
  limitations under the License.

-->

<project name="CreateFlexSDKReleaseCandidate" default="main" basedir=".">


    <!-- Required for OSX 10.6 / Snow Leopard Performance. -->
    <!-- Java 7 on Mac requires OSX 10.7.3 or higher and is 64-bit only -->
    <!-- local.d32 is set/used in build.properties so this needs to be done first. -->
    <condition property="local.d32" value="-d32">
        <and>
            <os family="windows"/>
            <equals arg1="${sun.arch.data.model}" arg2="64"/>
            <equals arg1="${os.arch}" arg2="x86_64"/>
            <equals arg1="${ant.java.version}" arg2="1.6"/>
        </and>
    </condition>

    <condition property="isMac" value="mac">
        <os family="mac" />
    </condition>
    <condition property="isWindows" value="windows">
        <os family="windows" />
    </condition>
    <condition property="isLinux" value="linux">
		<and>
			<os family="unix" />
			<not>
				<isset property="isMac" />
			</not>
		</and>
    </condition>
	
	<property name="rat.report" value="${basedir}/rat-report.txt"/>
	<property name="apache.rat.jar" value="apache-rat-0.11.jar" />
	<property name="apache.rat.tasks.jar" value="apache-rat-tasks-0.11.jar" />
	<property name="apache.rat.url" value="http://search.maven.org/remotecontent?filepath=org/apache/rat/apache-rat/0.11" />
	<property name="apache.rat.tasks.url" value="http://search.maven.org/remotecontent?filepath=org/apache/rat/apache-rat-tasks/0.11"/>
    
	<property file="${basedir}/local.properties" />
	<property file="${basedir}/build.properties" />
	   
    <property environment="env"/>
    
	<condition property="do.copy.downloads" >
		<isset property="download.cache.dir" /> 
	</condition>
	
    <condition property="CRLF" value="%0D%0A">
        <isset property="isWindows" />
    </condition>
    <property name="CRLF" value="%0A" />
    
    <fail message="The my.name property is not set to the RM's name"
    unless="my.name"/>
    
    <fail message="The ANT_HOME environment variable is not set."
        unless="env.ANT_HOME"/>
		
	<available file="${svn.dist.dev}"
		type="dir" 
		property="dist.dev" value="${svn.dist.dev}" />
    
	<fail message="The svn.dist.dev property is not set to the working copy for https://dist.apache.org/repos/dist/dev."
        unless="dist.dev"/>
				
	<available file="${svn.site}"
		type="dir" 
		property="site" value="${svn.site}" />
    
	<fail message="The svn.site property is not set to the working copy for https://flex.apache.org."
        unless="site"/>
				
	<available file="${env.AIR_HOME}"
		type="dir" 
		property="AIR_HOME" value="${env.AIR_HOME}" />

    <fail message="The AIR_HOME property is not set in environment or command-line."
        unless="AIR_HOME"/>
		
    <available file="${env.PLAYERGLOBAL_HOME}"
        type="dir"
        property="PLAYERGLOBAL_HOME" value="${env.PLAYERGLOBAL_HOME}" />
    
    <fail message="The PLAYERGLOBAL_HOME property is not set in environment or command-line."
        unless="PLAYERGLOBAL_HOME"/>
    
    <available file="${env.FLASHPLAYER_DEBUGGER}"
        type="dir"
        property="FLASHPLAYER_DEBUGGER" value="${env.FLASHPLAYER_DEBUGGER}" />
    
    <available file="${env.FLASHPLAYER_DEBUGGER}"
        type="file"
        property="FLASHPLAYER_DEBUGGER" value="${env.FLASHPLAYER_DEBUGGER}" />
    
    <fail message="The FLASHPLAYER_DEBUGGER property is not set in environment or command-line."
        unless="FLASHPLAYER_DEBUGGER"/>
        
    <available file="${env.ProgramFiles}/Mozilla Firefox/firefox.exe"
		type="file"
		property="browser" value="${env.ProgramFiles}/Mozilla Firefox/firefox.exe" />
    <available file="${env.ProgramFiles(x86)}/Mozilla Firefox/firefox.exe"
		type="file"
		property="browser" value="${env.ProgramFiles}/Mozilla Firefox/firefox.exe" />
    <available file="/Applications/Firefox.app/Contents/MacOS/firefox"
		type="file"
		property="browser" value="/Applications/Firefox.app/Contents/MacOS/firefox" />
        
    <available file="${env.ANT_HOME}/lib/${apache.rat.jar}"
        type="file"
        property="apache.rat.found"/>
    <available file="${env.ANT_HOME}/lib/${apache.rat.tasks.jar}"
        type="file"
        property="apache.rat.tasks.found"/>
		
    <fail message="Could not locate Firefox.  Please specify a browser with
    -Dbrowser=&lt;path-to-browser&gt;"
        unless="browser"/>
        
    <available file="${env.ProgramFiles}/SlikSVN/bin/svn.exe"
		type="file"
		property="svn" value="${env.ProgramFiles}/SlikSVN/bin/svn.exe" />
    <available file="${env.ProgramFiles(x86)}/SlikSVN/bin/svn.exe"
		type="file"
		property="svn" value="${env.ProgramFiles}/SlikSVN/bin/svn.exe" />
    <available file="/opt/subversion/bin/svn"
		type="file"
		property="svn" value="/opt/subversion/bin/svn" />
    <fail message="Could not locate SVN command-line.  Please specify the path to SVN with
    -Dsvn=&lt;path-to-svn&gt;"
        unless="svn"/>
                
    <available file="${env.ProgramFiles}/Git/bin/git.exe"
		type="file"
		property="git" value="${env.ProgramFiles}/Git/bin/git.exe" />
    <available file="${env.ProgramFiles(x86)}/Git/bin/git.exe"
		type="file"
		property="git" value="${env.ProgramFiles}/Git/bin/git.exe" />
    <available file="/usr/local/git/bin/git"
		type="file"
		property="git" value="/usr/local/git/bin/git" />
    <fail message="Could not locate Git command-line.  Please specify the path to Git with
    -Dgit=&lt;path-to-git&gt;"
        unless="git"/>
        
    <available file="${env.ANT_HOME}/lib/${apache.rat.jar}"
        type="file"
        property="apache.rat.found"/>
    <available file="${env.ANT_HOME}/lib/${apache.rat.tasks.jar}"
        type="file"
        property="apache.rat.tasks.found"/>
		
    <fail message="Could not locate Firefox.  Please specify a browser with
    -Dbrowser=&lt;path-to-browser&gt;"
        unless="browser"/>
    <fail message="The release candidate number is not set.  Specify -Drc=&lt;rc number (e.g. 1, 2, 3, etc)&gt;"
    unless="rc"/>
	
	<xmlproperty file="${site}/trunk/content/installer/sdk-installer-config-4.0.xml" semanticAttributes="true" collapseAttributes="true"/>
	<property name="release.installer" value="${config.version.latest}" />	
	<!-- clip build number from version -->
	<echo file="${basedir}/installerv.properties">latest.installer=${release.installer}</echo>
	<replaceregexp byline="true">
		<regexp pattern="\.[0-9]*$"/>
		<substitution expression=""/>
		<fileset dir="${basedir}">
			<include name="installerv.properties"/>
		</fileset>
	</replaceregexp>
	<property file="installerv.properties" />
	<echo>latest installer is ${latest.installer}</echo>
	<delete file="installerv.properties" />
	
	<target name="install-rat" depends="install-rat.jar,install-rat.tasks.jar" />
	<target name="install-rat.jar" unless="apache.rat.found">
		<get src="${apache.rat.url}/${apache.rat.jar}" dest="${env.ANT_HOME}/lib/${apache.rat.jar}" />
	</target>
	<target name="install-rat.tasks.jar" unless="apache.rat.tasks.found">
		<get src="${apache.rat.tasks.url}/${apache.rat.tasks.jar}" dest="${env.ANT_HOME}/lib/${apache.rat.tasks.jar}" />
	</target>
	
    <target name="rat-taskdef" description="Rat taskdef">
        <typedef resource="org/apache/rat/anttasks/antlib.xml"
        uri="antlib:org.apache.rat.anttasks"
        classpathref="anttask.classpath"/>
    </target>

    <target name="main" depends="install-rat,credentials" description="Perform required release approval steps">
		<antcall target="check-new-version" />
		<exec executable="${git}" dir="${basedir}" failonerror="true" >
			<arg value="pull" />
			<arg value="--rebase" />
		</exec>
		<antcall target="stage.rc" />
		<antcall target="push.rc" />
	</target>
	
	<target name="stage.rc" >
		<ant antfile="build.xml" target="release" />
		<ant antfile="build.xml" target="asdoc-package" />
		<ant antfile="build.xml" target="create-md5" />
		<ant antfile="build.xml" target="sign" />
		<ant antfile="build.xml" target="doc-create-md5" />
		<ant antfile="build.xml" target="doc-sign" />
		<mkdir dir="${dist.dev}/flex/sdk/${release.version}/rc${rc}/binaries" />
		<mkdir dir="${dist.dev}/flex/sdk/${release.version}/rc${rc}/doc" />
		<copy todir="${dist.dev}/flex/sdk/${release.version}/rc${rc}" >
			<fileset dir="${basedir}/out" >
				<include name="apache-flex-sdk-${release.version}-src*" />
			</fileset>
		</copy>
		<copy todir="${dist.dev}/flex/sdk/${release.version}/rc${rc}/binaries" >
			<fileset dir="${basedir}/out" >
				<include name="apache-flex-sdk-${release.version}-bin*" />
			</fileset>
		</copy>
		<copy todir="${dist.dev}/flex/sdk/${release.version}/rc${rc}/doc" >
			<fileset dir="${basedir}/out" >
				<include name="apache-flex-sdk-${release.version}-asdoc*" />
			</fileset>
		</copy>
		<copy file="${basedir}/README" tofile="${dist.dev}/flex/sdk/${release.version}/rc${rc}/READme" />
		<copy file="${basedir}/RELEASE_NOTES" tofile="${dist.dev}/flex/sdk/${release.version}/rc${rc}/RELEASE_NOTES" />
		<copy file="${basedir}/ApproveSDK.xml" tofile="${dist.dev}/flex/sdk/${release.version}/rc${rc}/ApproveSDK.xml" />
		<copy file="${basedir}/apache-flex-sdk-installer-config.xml" tofile="${dist.dev}/flex/sdk/${release.version}/rc${rc}/binaries/apache-flex-sdk-installer-config.xml" />
	</target>
	
	<target name="push.rc" >
		<exec executable="${svn}" dir="${dist.dev}/flex/sdk" failonerror="true" >
			<arg value="add" />
			<arg value="${dist.dev}/flex/sdk/${release.version}/rc${rc}" />
		</exec>
		<exec executable="${svn}" dir="${dist.dev}/flex/sdk" failonerror="true" >
			<arg value="commit" />
			<arg value="--username" />
			<arg value="${apache.username}" />
			<arg value="--password" />
			<arg value="${apache.password}" />
			<arg value="-m" />
			<arg value="rc${rc} of Apache Flex SDK ${release.version}" />
		</exec>
		<exec executable="${git}" dir="${basedir}" failonerror="true" >
			<arg value="tag" />
			<arg value="-a" />
			<arg value="apache-flex-sdk-${release.version}-rc${rc}" />
			<arg value="-m" />
			<arg value="&quot;rc${rc} of apache-flex-sdk-${release.version}&quot;" />
		</exec>
		<exec executable="${git}" dir="${basedir}" failonerror="true" >
			<arg value="push" />
			<arg value="--tags" />
		</exec>
		<antcall target="update-installer-config" />
		<antcall target="mail" />
    </target>

	<target name="credentials" depends="get-username,get-password">
		<echo>${apache.username}</echo>
		<echo>${apache.password}</echo>
	</target>
	<target name="get-username" unless="apache.username" >
        <input
        message="Enter Apache account username:"
        addproperty="apache.username"/>
        <condition property="have.username">
			<not>
				<equals trim="true" arg1="" arg2="${apache.username}"/>
			</not>
        </condition>
		<fail message="The apache.username property is not set.  It should be the username for Apache SVN and Git."
			unless="have.username"/>
	</target>
	<target name="get-password" unless="apache.password" >
        <input
        message="Enter Apache account password:"
        addproperty="apache.password"/>
        <condition property="have.password">
			<not>
				<equals trim="true" arg1="" arg2="${apache.password}"/>
			</not>
        </condition>
		<fail message="The apache.password property is not set.  It should be the password for Apache SVN and Git."
			unless="have.password"/>
	</target>
	
	<target name="update-installer-config" >
		<exec executable="${svn}" dir="${site}" failonerror="true" >
			<arg value="update" />
			<arg value="trunk/content/installer/sdk-installer-config-4.0.xml" />
		</exec>
        <replaceregexp byline="true">
            <regexp pattern="rc id=&quot;FlexSDKRC&quot; version=&quot;.*&quot; path=&quot;https://dist.apache.org/repos/dist/dev/flex/sdk/.*/binaries/&quot; file=&quot;apache-flex-sdk-.*-bin&quot; dev=&quot;true&quot;"/>
            <substitution expression="rc id=&quot;FlexSDKRC&quot; version=&quot;${release.version} RC${rc}&quot; path=&quot;https://dist.apache.org/repos/dist/dev/flex/sdk/${release.version}/rc${rc}/binaries/&quot; file=&quot;apache-flex-sdk-${release.version}-bin&quot; dev=&quot;true&quot;"/>
            <fileset dir="${site}/trunk/content/installer">
                <include name="sdk-installer-config-4.0.xml"/>
            </fileset>
        </replaceregexp>
		<!-- un-comment if needed -->
        <replaceregexp byline="true">
            <regexp pattern="&lt;!--&lt;rc id=&quot;FlexSDKRC&quot;(.*)&gt;--&gt;"/>
            <substitution expression="&lt;rc id=&quot;FlexSDKRC&quot;\1&gt;"/>
            <fileset dir="${site}/trunk/content/installer">
                <include name="sdk-installer-config-4.0.xml"/>
            </fileset>
        </replaceregexp>
		<exec executable="${svn}" dir="${site}" failonerror="true" >
			<arg value="commit" />
			<arg value="--username" />
			<arg value="${apache.username}" />
			<arg value="--password" />
			<arg value="${apache.password}" />
			<arg value="-m" />
			<arg value="&quot;update sdk-installer-config-4.0 for flex sdk ${release.version} rc${rc}&quot;" />
		</exec>
		<!-- pause to give buildbot chance to react -->
		<sleep seconds="5" />
		<get src="https://cms.apache.org/flex/publish" username="${apache.username}" password="${apache.password}" dest="${basedir}/getresult.txt" />
		<delete file="${basedir}/getresult.txt" />
	</target>
	
	<target name="update-installer-config-release" >
		<exec executable="${svn}" dir="${site}" failonerror="true" >
			<arg value="update" />
			<arg value="trunk/content/installer/sdk-installer-config-4.0.xml" />
		</exec>
		<property name="latest.release" value="${config.products.ApacheFlexSDK.latestVersion}" />	
        <replaceregexp byline="true" flags="g">
            <regexp pattern="ApacheFlexSDK(.*)latestVersion=&quot;${latest.release}&quot;(.*)"/>
            <substitution expression="ApacheFlexSDK\1latestVersion=&quot;${release.version}&quot;\2"/>
            <fileset dir="${site}/trunk/content/installer">
                <include name="sdk-installer-config-4.0.xml"/>
            </fileset>
        </replaceregexp>
        <replaceregexp byline="true" flags="g">
            <regexp pattern="path=&quot;flex/${latest.release}/binaries/&quot;(.*)default=&quot;true&quot;"/>
            <substitution expression="path=&quot;http://archive.apache.org/dist/flex/${latest.release}/binaries&quot;\1"/>
            <fileset dir="${site}/trunk/content/installer">
                <include name="sdk-installer-config-4.0.xml"/>
            </fileset>
        </replaceregexp>
        <replaceregexp byline="true" flags="g">
            <regexp pattern="&lt;rc id=&quot;FlexSDKRC&quot;(.*)"/>
            <substitution expression="&lt;VersionX id=&quot;${release.version}&quot; version=&quot;${release.version}&quot; path=&quot;flex/${release.version}/binaries/&quot; file=&quot;apache-flex-sdk-${release.version}-bin&quot; default=&quot;true&quot; /&gt;&#x0a;    &lt;rc id=&quot;FlexSDKRC&quot;\1"/>
            <fileset dir="${site}/trunk/content/installer">
                <include name="sdk-installer-config-4.0.xml"/>
            </fileset>
        </replaceregexp>
        <replaceregexp byline="true" flags="g">
            <regexp pattern="${latest.release}"/>
            <substitution expression="${release.version}"/>
            <fileset dir="${site}/trunk/content">
                <include name="doc-getstarted.cmsPage"/>
            </fileset>
        </replaceregexp>
		<tstamp>
			<format pattern="yyyy-MM-dd" property="release.date" />
		</tstamp>
		<tstamp>
			<format pattern="MMMM yyyy" property="release.date.month" />
		</tstamp>
		<tstamp>
			<format pattern="dd MMMM yyyy" property="release.date.full" />
		</tstamp>
        <replaceregexp byline="true" flags="g">
            <regexp pattern="${latest.release}"/>
            <substitution expression="${release.version}"/>
            <fileset dir="${site}/trunk/content">
                <include name="doap_Flex.rdf"/>
                <include name="download-source.cmsPage"/>
                <include name="download-binaries.cmsPage"/>
            </fileset>
        </replaceregexp>
        <replaceregexp byline="true" flags="g">
            <regexp pattern="this release, available as of .*\.  (.*)"/>
            <substitution expression="this release, available as of ${release.date.full}.  \1"/>
            <fileset dir="${site}/trunk/content">
                <include name="download-source.cmsPage"/>
                <include name="download-binaries.cmsPage"/>
            </fileset>
        </replaceregexp>
        <replaceregexp byline="true" flags="g">
            <regexp pattern="binaries were published on .*\."/>
            <substitution expression="binaries were published on ${release.date.full}."/>
            <fileset dir="${site}/trunk/content">
                <include name="download-binaries.cmsPage"/>
            </fileset>
        </replaceregexp>
        <replaceregexp byline="true" flags="g">
            <regexp pattern="        &lt;created&gt;.*&lt;/created&gt;"/>
            <substitution expression="        &lt;created&gt;${release.date}&lt;/created&gt;"/>
            <fileset dir="${site}/trunk/content">
                <include name="doap_Flex.rdf"/>
            </fileset>
        </replaceregexp>
        <replaceregexp byline="true" flags="g">
            <regexp pattern="${latest.release}(.*)\)"/>
            <substitution expression="${release.version} (${release.date.month})"/>
            <fileset dir="${site}/trunk/templates">
                <include name="flex-v2-footer.html"/>
            </fileset>
        </replaceregexp>
		<exec executable="${svn}" dir="${site}" failonerror="true" >
			<arg value="commit" />
			<arg value="--username" />
			<arg value="${apache.username}" />
			<arg value="--password" />
			<arg value="${apache.password}" />
			<arg value="-m" />
			<arg value="&quot;update sdk-installer-config-4.0 and other files for flex sdk ${release.version} rc${rc}&quot;" />
		</exec>
		<!-- pause to give buildbot chance to react -->
		<sleep seconds="5" />
		<get src="https://cms.apache.org/flex/publish" username="${apache.username}" password="${apache.password}" dest="${basedir}/getresult.txt" />
		<delete file="${basedir}/getresult.txt" />
	</target>
	
	<target name="check-new-version" description="check if svn folder needs to be added" >
		<condition property="version.folder" value="${dist.dev}/flex/sdk/${release.version}" >
			<not>
				<available file="${dist.dev}/flex/sdk/${release.version}" />
			</not>
		</condition>
		<antcall target="add-version-folder" />
	</target>
    
	<target name="add-version-folder" description="adds svn folder if needed" if="version.folder" >
		<mkdir dir="${version.folder}" />
		<exec executable="${svn}" dir="${dist.dev}/flex/sdk" failonerror="true" >
			<arg value="add" />
			<arg value="${version.folder}" />
		</exec>
	</target>
		
    <target name="mail" >
        <!-- try to set line breaks before the vertical line            | -->
        <echo file="${basedir}/discussthread.properties">discuss.thread.body=This is the discussion thread.\n\
\n\
Changes in this RC include:\n\
\n\
\n\
Thanks,\n\
${my.name}
</echo>
        <replace file="${basedir}/discussthread.properties">
            <replacefilter token=" " value="%20" />
            <replacefilter token="\n" value="${CRLF}" />
        </replace>
        <property file="${basedir}/discussthread.properties" />

        <!-- try to set line breaks before the vertical line            | -->
        <echo file="${basedir}/votethread.properties">vote.thread.body=Hi,\n\
\n\
\n\
This is a Apache Flex SDK ${release.version} release candidate ${rc}.\n\
Please see the RELEASE_NOTES and the README.\n\
\n\
There is a known bug in Adobe Flash Builder 4.6 and 4.7 that causes an issue when creating new applications. Adobe has provided a workaround for FB 4.7 but not for 4.6.\n\
\n\
The release candidate can be found here;\n\
    https://dist.apache.org/repos/dist/dev/flex/sdk/${release.version}/rc${rc}/\n\
\n\
The binary distributions as a convenience for the respective platforms, are available here:\n\
    https://dist.apache.org/repos/dist/dev/flex/sdk/${release.version}/rc${rc}/binaries\n\
\n\
\n\
The most convenient way to use the binary package is to install it via Ant or the Installer. To use an Installer you must use InstallApacheFlex version 3.1 or later.   You can get the latest InstallApacheFlex here:\n\
    http://www.apache.org/dyn/closer.cgi?path=/flex/installer/${latest.installer}/binaries/\n\
\n\
\n\
Before voting please review the section, 'What are the ASF requirements on approving a release?', at:\n\
    http://www.apache.org/dev/release.html#approving-a-release\n\
\n\
At a minimum you would be expected to check that:\n\
    - MD5 and signed packages are correct\n\
    - README, RELEASE_NOTES, NOTICE and LICENSE files are all fine\n\
    - That you can compile from source package\n\
    - That the SDK can be used in your IDE of choice\n\
    - That the SDK can be used to make a mobile, desktop and browser application\n\
\n\
When testing please check the md5 and asc files and make sure that the source can be compiled.\n\
\n\
Please vote to approve this release:\n\
    +1 Approve the release\n\
    -1 Veto the release (please provide specific comments to why)\n\
\n\
This vote will be open for 72 hours or until a result can be called.\n\
\n\
The vote passes if there is:\n\
    - At least 3 +1 votes from the PMC\n\
    - More positive votes than negative votes\n\
\n\
If you find an issue with the release that's a 'show stopper' please don't hold off voting -1. If someone votes -1 please continue testing as we want to try and catch as many issues as we can and cut down on the number of release candidates. Remember existing voters can change their vote during the voting process.\n\
\n\
People who are not in PMC are also encouraged to test out the release and vote, although their votes will not be binding, they can influence how the PMC votes.\n\
\n\
When voting please indicate what OS, IDE, Flash Player version and AIR version you tested the SDK with.\n\
\n\
Please put all discussion about this release in the DISCUSSION thread not this VOTE thread.\n\
\n\
For your convenience, there issues an Ant script in the RC folder that automates the checks a voter should perform on the RC.  It will:\n\
    - download the default source package for your OS (use -Dpackage.suffix to override)\n\
    - run md5 and gpg checks (this assumes you have gpg installed in your path)\n\
    - uncompress the source package\n\
    - install and run rat\n\
    - display the rat report and ask you to verify\n\
    - display the rat report without the AL files and ask you to verify the non-AL files\n\
    - display the README and ask you to verify\n\
    - display the RELEASE_NOTES and ask you to verify\n\
    - display the NOTICE and ask you to verify\n\
    - display the LICENSE and ask you to verify\n\
    - run the build and any tests run by the build.\n\
\n\
\n\
You should be able to go away for a while during the build.  When it is finished, it will display information to be copied into the vote thread.\n\
You are not required to use this script, and more testing of the packages and build results are always encouraged.\n\
\n\
To use this script (assuming you have Ant installed), it should be as simple as:\n\
    - Create an empty folder\n\
    - Download ApproveSDK.xml into that folder from:\n\
        https://dist.apache.org/repos/dist/dev/flex/sdk/${release.version}/rc${rc}/ApproveSDK.xml\n\
    - Run: ant -e -f ApproveSDK.xml -Drelease.version=${release.version} -Drc=${rc}\n\
\n\
\n\
Thanks,\n\
${my.name}
</echo>
        <replace file="${basedir}/votethread.properties">
            <replacefilter token=" " value="%20" />
            <replacefilter token="\n" value="${CRLF}" />
        </replace>
        <property file="${basedir}/votethread.properties" />
        <echo file="${basedir}/votethread.html">&lt;html&gt;&lt;body&gt;&lt;a href=&quot;mailto:dev@flex.apache.org?subject=[DISCUSS]%20Discuss%20Release%20Apache%20Flex%20SDK%20${release.version}%20RC${rc}&amp;body=${discuss.thread.body}&quot;&gt;Click here to review discuss thread&lt;/a&gt;&lt;br/&gt;&lt;a href=&quot;mailto:dev@flex.apache.org?subject=[VOTE]%20Release%20Apache%20Flex%20SDK%20${release.version}%20RC${rc}&amp;body=${vote.thread.body}&quot;&gt;Click here to review vote thread&lt;/a&gt;&lt;/body&gt;&lt;/html&gt;</echo>
        <makeurl file="${basedir}/votethread.html" property="vote.thread.url" />
        <exec executable="${browser}">
            <arg value="${vote.thread.url}" />
        </exec>
		<delete file="${basedir}/votethread.properties" />
		<delete file="${basedir}/votethread.html" />
		<delete file="${basedir}/discussthread.properties" />
    </target>
	
	<target name="release" >
		<available file="${svn.dist.release}"
			type="dir" 
			property="dist.release" value="${svn.dist.release}" />
    
		<fail message="The svn.dist.release property is not set to the working copy for https://dist.apache.org/repos/dist/release."
			unless="dist.release"/>
				
		<exec executable="${svn}" dir="${dist.release}/flex" failonerror="true" >
			<arg value="update" />
		</exec>
		<mkdir dir="${dist.release}/flex/${release.version}" />
		<mkdir dir="${dist.release}/flex/${release.version}/binaries" />
		<mkdir dir="${dist.release}/flex/${release.version}/doc" />
		<copy todir="${dist.release}/flex/${release.version}/doc" >
			<fileset dir="${dist.dev}/flex/sdk/rc${rc}/doc" >
				<include name="apache-flex-sdk-${release.version}-asdoc*" />
			</fileset>
		</copy>
		<copy todir="${dist.release}/flex/${release.version}/binaries" >
			<fileset dir="${dist.dev}/flex/sdk/rc${rc}/binaries" >
				<include name="apache-flex-sdk-${release.version}-bin*" />
				<include name="apache-flex-sdk-installer-config.xml" />
			</fileset>
		</copy>
		<copy todir="${dist.release}/flex/${release.version}" >
			<fileset dir="${dist.dev}/flex/sdk/rc${rc}" >
				<include name="READme" />
				<include name="RELEASE_NOTES" />
				<include name="apache-flex-sdk-${release.version}-src*" />
			</fileset>
		</copy>
		<exec executable="${svn}" dir="${dist.release}/flex" failonerror="true" >
			<arg value="add" />
			<arg value="${release.version}" />
		</exec>
		<exec executable="${svn}" dir="${dist.release}/flex" failonerror="true" >
			<arg value="commit" />
			<arg value="--username" />
			<arg value="${apache.username}" />
			<arg value="--password" />
			<arg value="${apache.password}" />
			<arg value="-m" />
			<arg value="Apache Flex SDK ${release.version}" />
		</exec>
		<exec executable="${git}" dir="${basedir}" failonerror="true" >
			<arg value="tag" />
			<arg value="-a" />
			<arg value="apache-flex-sdk-${release.version}" />
			<arg value="-m" />
			<arg value="&quot;Official release of apache-flex-sdk-${release.version}&quot;" />
		</exec>
		<exec executable="${git}" dir="${basedir}" failonerror="true" >
			<arg value="push" />
			<arg value="--tags" />
		</exec>
		<echo>Wait at least 24 hours before running update-installer-config-release target</echo>
	</target>
</project>
