<?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="CreateFalconReleaseCandidate" default="main" basedir=".">

    <!-- use -Dtag=<tag or commit hash> to build from other than the head -->

    <!-- 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"/>
	
	<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.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="checkout_tag" if="tag" >
        <exec executable="${git}" dir="${basedir}" failonerror="true" >
            <arg value="checkout" />
            <arg value="${tag}" />
        </exec>
    </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="checkout_tag" />
		<ant antfile="build.xml" target="release" />
		<ant antfile="build.xml" target="create-md5" />
		<ant antfile="build.xml" target="sign" />
		<mkdir dir="${dist.dev}/flex/falcon/${release.version}/rc${rc}/binaries" />
		<copy todir="${dist.dev}/flex/falcon/${release.version}/rc${rc}" >
			<fileset dir="${basedir}/out" >
				<include name="apache-flex-falconjx-${release.version}-src*" />
			</fileset>
		</copy>
		<copy todir="${dist.dev}/flex/falcon/${release.version}/rc${rc}/binaries" >
			<fileset dir="${basedir}/out" >
				<include name="apache-flex-falconjx-${release.version}-bin*" />
			</fileset>
		</copy>
		<copy file="${basedir}/README" tofile="${dist.dev}/flex/falcon/${release.version}/rc${rc}/READme" />
		<copy file="${basedir}/ApproveFalcon.xml" tofile="${dist.dev}/flex/falcon/${release.version}/rc${rc}/ApproveFalcon.xml" />
		<copy file="${basedir}/apache-flex-falconjx-installer-config.xml" tofile="${dist.dev}/flex/falcon/${release.version}/rc${rc}/binaries/apache-flex-falconjx-installer-config.xml" />
        <exec executable="${svn}" dir="${dist.dev}/flex/falcon" failonerror="true" >
            <arg value="update" />
        </exec>
		<exec executable="${svn}" dir="${dist.dev}/flex/falcon" failonerror="true" >
			<arg value="add" />
			<arg value="${dist.dev}/flex/falcon/${release.version}/rc${rc}" />
		</exec>
		<exec executable="${svn}" dir="${dist.dev}/flex/falcon" 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 Falcon ${release.version}" />
		</exec>
        <antcall target="tag_release" />
		<antcall target="update-installer-config" />
		<antcall target="mail" />
    </target>
    
    <target name="tag_release" unless="tag" >
        <exec executable="${git}" dir="${basedir}" failonerror="true" >
            <arg value="tag" />
            <arg value="-a" />
            <arg value="apache-flex-falcon-${release.version}-rc${rc}" />
            <arg value="-m" />
            <arg value="&quot;rc${rc} of apache-flex-falcon-${release.version}&quot;" />
        </exec>
        <exec executable="${git}" dir="${basedir}" failonerror="true" >
            <arg value="push" />
            <arg value="--tags" />
        </exec>
    </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="developmentVersion=&quot;${release.version}&quot; rc=&quot;rc.*&quot; latestVersion"/>
            <substitution expression="developmentVersion=&quot;${release.version}&quot; rc=&quot;rc${rc}&quot; latestVersion"/>
            <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 falcon ${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" depends="credentials">
		<exec executable="${svn}" dir="${site}" failonerror="true" >
			<arg value="update" />
			<arg value="trunk/content/installer/sdk-installer-config-4.0.xml" />
		</exec>
        <xmlproperty file="${site}/trunk/content/installer/sdk-installer-config-4.0.xml" semanticAttributes="true" collapseAttributes="true"/>
		<property name="latest.release" value="${config.products.ApacheFlexFalconJX.latestVersion}" />
        <replaceregexp byline="true" flags="g">
            <regexp pattern="ApacheFlexFalconJX(.*)latestVersion=&quot;${latest.release}&quot;(.*)"/>
            <substitution expression="ApacheFlexFalconJX\1latestVersion=&quot;${release.version}&quot;\2"/>
            <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 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/falcon/${release.version}" >
			<not>
				<available file="${dist.dev}/flex/falcon/${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/falcon" 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\
This is vote for the ${release.version} release of the FalconJX (and Falcon)\n\
compilers.  There is no separate Falcon-only release package at\n\
this time.  The only purpose of the FalconJX packages are to serve as\n\
upstream packages for the FlexJS release.\n\
\n\
The release candidate can be found here;\n\
https://dist.apache.org/repos/dist/dev/flex/falcon/${release.version}/rc${rc}/\n\
\n\
Before voting please review the section, 'What are the ASF requirements on\n\
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 the build script completes successfully\n\
- That you can compile using the results of building the source package\n\
\n\
The source package is set up the same way as the repo.  This means that\n\
the results of the build are not the same as the binary package.  The\n\
compiled source package can be used to build FlexJS apps via the command\n\
line and Ant, but not in Flash Builder or other IDEs.  You can test the source\n\
package by building it, then pointing to it from the source package of the\n\
FlexJS release candidate and building the examples in the FlexJS package.\n\
\n\
The binary package is set up as an upstream package for the FlexJS\n\
release.  The most convenient way to use the binary package is to install\n\
a FlexJS SDK via Ant or the Installer.\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\
Remember that this is a 'beta-quality' release so there\n\
will be many bugs found.  The goal is not to try to find and fix bugs\n\
in the RC, but to make sure we have the packaging right, and enough\n\
functionality that folks will have some success trying to use it.\n\
\n\
People who are not in PMC are also encouraged to test out the release and\n\
vote, although their votes will not be binding, they can influence how the\n\
PMC votes.\n\
\n\
When voting please indicate what OS, IDE, Flash Player version and AIR\n\
version you tested with.\n\
\n\
Please put all discussion about this release in the DISCUSSION thread not\n\
this VOTE thread.\n\
\n\
For your convenience there is an ant script that automates the common\n\
steps to validate a release.  Instead of individually downloading the\n\
package and signature files, unzipping, etc, you can instead:\n\
1) create an empty folder,\n\
2) download into that folder this file:\n\
https://dist.apache.org/repos/dist/dev/flex/falcon/${release.version}/rc${rc}/ApproveFalcon.xml\n\
3) run the script: ant -e -f ApproveFalcon.xml -Drelease.version=${release.version} -Drc=${rc}\n\
\n\
You are not required to use this script, and more testing of the packages\n\
and build results are always encouraged.\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%20FalconJX%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%20FalconJX%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" depends="credentials" >
		<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>
		<exec executable="${svn}" dir="${dist.release}/flex/falcon" failonerror="true" >
			<arg value="mv" />
			<arg value="${dist.dev}/flex/falcon/${release.version}/rc${rc}" />
            <arg value="${dist.release}/flex/falcon/${release.version}" />
		</exec>
		<exec executable="${svn}" dir="${dist.release}/flex/falcon" 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 Falcon ${release.version}" />
		</exec>
        <antcall target="release.tag" />
		<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>
	
    <target name="release.tag" >
        <condition property="tag" value="apache-flex-falcon-${release.version}-rc${rc}">
            <not>
                <isset property="tag" />
            </not>
        </condition>
        <exec executable="${git}" dir="${basedir}" failonerror="true" output="${basedir}/taghash.txt">
            <arg value="show" />
            <arg value="${tag}" />
        </exec>
        <replaceregexp file="${basedir}/taghash.txt" match="(.*).commit (.*).Author(.*)" replace="\2" byline="false" flags="s" />
        <loadfile srcFile="${basedir}/taghash.txt" property="releasehash" />
        <exec executable="${git}" dir="${basedir}" failonerror="true" >
            <arg value="tag" />
            <arg value="-a" />
            <arg value="apache-flex-falcon-${release.version}" />
            <arg value="${releasehash}" />
            <arg value="-m" />
            <arg value="&quot;Official release of apache-flex-falcon-${release.version}&quot;" />
        </exec>
    </target>
</project>
