<?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="ApproveApacheFlexInstaller" 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>
    <condition property="package.suffix" value="zip">
        <os family="windows" />
    </condition>
	<property name="package.suffix" value="tar.gz" />
	
	<property name="rat.report" value="${basedir}/rat-report.txt"/>
    <property name="apache.rat.jar" value="apache-rat-0.12.jar" />
    <property name="apache.rat.tasks.jar" value="apache-rat-tasks-0.12.jar" />
    <property name="apache.rat.url" value="http://central.maven.org/maven2/org/apache/rat/apache-rat/0.12" />
    <property name="apache.rat.tasks.url" value="http://central.maven.org/maven2/org/apache/rat/apache-rat-tasks/0.12" />
	
	<property name="mac.text.display" value="cat" />
	<property name="win.text.display" value="type" />
	<property name="linux.text.display" value="cat" />
    
    <property file="${basedir}/approveinstaller.properties"/>
    <property environment="env"/>

    <property name="build.target" value="main" />
    
	<condition property="do.copy.downloads" >
		<isset property="download.cache.dir" /> 
	</condition>
	
    <fail message="The ANT_HOME environment variable is not set."
        unless="env.ANT_HOME"/>
		
	<available file="${env.FLEX_HOME}" 
		type="dir" 
		property="FLEX_HOME" value="${env.FLEX_HOME}" />

    <fail message="The FLEX_HOME property is not set in environment or command-line."
        unless="FLEX_HOME"/>
				
	<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.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="The release version is not set.  Specify -Drelease.version=&lt;release version (e.g. 3.1, 3.2, etc)&gt;"
    unless="release.version"/>

    <condition property="package.url.path"
        value="http://apacheflexbuild.cloudapp.net:8080/job/flex-sdk_installer_release-candidate/lastSuccessfulBuild/artifact/out">
        <not>
            <isset property="rc" />
        </not>
    </condition>

	<property name="package.url.path" value="https://dist.apache.org/repos/dist/dev/flex/installer/${release.version}/rc${rc}" />
	<property name="package.url.name" value="apache-flex-sdk-installer-${release.version}.0-src" />
	
    <condition property="zip.compressed">
        <equals arg1="zip" arg2="${package.suffix}" />
    </condition>
    
	<target name="display-text-mac" if="isMac">
		<echo>========================= Begin ${file} ==============================</echo>
		<exec executable="${mac.text.display}" >
			<arg value="${file}" /> 
		</exec>
		<echo>========================= End ${file} ==============================</echo>
	</target>
	<target name="display-text-win" if="isWindows">
		<pathconvert targetos="windows" property="winfile">
			<path path="${file}" />
		</pathconvert>
		<echo>========================= Begin ${winfile} ==============================</echo>
		<exec executable="cmd.exe" >
			<arg value="/c" />
			<arg value="${win.text.display}" />
			<arg value="${winfile}" /> 
		</exec>		
		<echo>========================= End ${winfile} ==============================</echo>
	</target>
	<target name="display-text-linux" if="isLinux">
		<echo>========================= Begin ${file} ==============================</echo>
		<exec executable="${linux.text.display}" >
			<arg value="${file}" /> 
		</exec>
		<echo>========================= End ${file} ==============================</echo>
	</target>
	
	<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,download,check-sigs,uncompress,rat-check,check-notices,build,approve" description="Perform required release approval steps">
    </target>
    
    <target name="main-no-download" depends="install-rat,check-sigs,uncompress,rat-check,check-notices,build,approve" description="Perform required release approval steps">
    </target>
	
    <target name="test" >
		<echo>${rat.report}.bin.txt</echo>
		<replaceregexp file="${rat.report}.bin.txt" match="..AL.*" replace="" byline="true"/>
    </target>
	
	<target name="display-text" >
		<antcall target="display-text-mac" />
		<antcall target="display-text-win" />
		<antcall target="display-text-linux" />
	</target>

	<target name="display-text-test" >
		<antcall target="display-text" >
			<param name="file" value="${basedir}/rat-report.txt" />
		</antcall>
	</target>
	
    <target name="download" description="download the release package">
        <get src="${package.url.path}/${package.url.name}.${package.suffix}"
            dest="${basedir}/${package.url.name}.${package.suffix}" />
        <get src="${package.url.path}/${package.url.name}.${package.suffix}.md5"
            dest="${basedir}/${package.url.name}.${package.suffix}.md5" />
            <antcall target="asc_get" />
    </target>
    
    <target name="asc_get" if="rc" >
        <get src="${package.url.path}/${package.url.name}.${package.suffix}.asc"
        dest="${basedir}/${package.url.name}.${package.suffix}.asc" />
    </target>
    
    <target name="check-sigs" description="check md5 and gpg sigs">
		<replace file="${basedir}/${package.url.name}.${package.suffix}.md5"
			token=" " />
		<checksum file="${basedir}/${package.url.name}.${package.suffix}" algorithm="md5" verifyproperty="md5.ok" />
        <condition property="MD5Invalid">
			<not>
				<equals arg1="${md5.ok}" arg2="true" />
			</not>
        </condition>
        <fail message="MD5 checksum did not match" if="MD5Invalid" />
        <echo>rc is ${rc}</echo>
        <antcall target="gpg_check" />
    </target>
    
    <target name="gpg_check" if="rc">
        <exec executable="gpg" failonerror="true">
            <arg value="--verify" />
            <arg value="${basedir}/${package.url.name}.${package.suffix}.asc" />
            <arg value="${basedir}/${package.url.name}.${package.suffix}" />
        </exec>
    </target>

    <target name="uncompress" depends="pre-clean, untar-file, unzip-file" />

    <target name="pre-clean" description="remove old uncompressed package" >
		<delete dir="${basedir}/${package.url.name}" failonerror="false" />
	</target>
	
    <target name="untar-file" unless="zip.compressed" description="Untars zipFile">
        <untar src="${basedir}/${package.url.name}.${package.suffix}"
                dest="${basedir}/${package.url.name}" compression="gzip"/>
    </target>

    <target name="unzip-file" if="zip.compressed" description="Unzips zipFile">
        <unzip src="${basedir}/${package.url.name}.${package.suffix}"
                dest="${basedir}/${package.url.name}"/>
    </target>

    <target name="rat-check" >

        <echo message="Checking files at ${basedir}/${package.url.name}, report is ${rat.report}"/>

        <rat:report xmlns:rat="antlib:org.apache.rat.anttasks"
            reportFile="${rat.report}">
            <fileset dir="${basedir}/${package.url.name}">
                <!-- exclude media (png, gif, jpg, mp3, flv) -->
                <exclude name="**/*.png"/>
                <exclude name="**/*.gif"/>
                <exclude name="**/*.jpg"/>
                <exclude name="**/*.mp3"/>
                <exclude name="**/*.flv"/>
                <exclude name="build.number"/>
                <exclude name="CONTRIBUTING"/>
                <exclude name="CONTRIBUTORS"/>
            </fileset>
        </rat:report>
		<antcall target="display-text" >
            <param name="file" value="${rat.report}" />
        </antcall>
        <input
			message="Check that there are no unknown or unapproved licenses or archives. Is it ok?"
            validargs="y,n"
        defaultvalue="y"
        addproperty="rat.license.ok"/>
		<echo>filtering out AL files to make it easier to see binary files</echo>
		<copy file="${rat.report}" tofile="${rat.report}.bin.txt" />
		<replaceregexp file="${rat.report}.bin.txt" match="..AL.*" replace="" byline="true"/>
		<antcall target="display-text" >
            <param name="file" value="${rat.report}.bin.txt" />
        </antcall>
        <input
			message="Check that there are no unexpected binaries.  Is it ok?"
            validargs="y,n"
        defaultvalue="n"
        addproperty="rat.binaries.ok"/>
    </target>

    <target name="check-notices" description="open each notice file for review, grep for a few things" >
        <fail message="README not in package">
			<condition>
	            <not>
    	            <available file="${basedir}/${package.url.name}/README" />
        	    </not>
			</condition>
        </fail>
        <fail message="RELEASE_NOTES not in package">
			<condition>
				<not>
					<available file="${basedir}/${package.url.name}/RELEASE_NOTES" />
				</not>
			</condition>
        </fail>
        <fail message="NOTICE not in package">
			<condition>
				<not>
					<available file="${basedir}/${package.url.name}/NOTICE" />
				</not>
			</condition>
        </fail>
        <fail message="LICENSE not in package">
			<condition>
				<not>
					<available file="${basedir}/${package.url.name}/LICENSE" />
				</not>
			</condition>
        </fail>
		<antcall target="display-text" >
            <param name="file" value="${basedir}/${package.url.name}/README" />
        </antcall>
		<input
			message="Check the README for version numbers, spelling, grammar, accuracy.  Is it ok?"
            validargs="y,n"
        defaultvalue="y"
        addproperty="readme.ok"/>
		
		<antcall target="display-text" >
            <param name="file" value="${basedir}/${package.url.name}/RELEASE_NOTES" />
        </antcall>
		<input
			message="Check the RELEASE_NOTES for copyright years, spelling, grammar, accuracy. Is it ok?"
            validargs="y,n"
        defaultvalue="y"
        addproperty="releasenotes.ok"/>
		
		<antcall target="display-text" >
            <param name="file" value="${basedir}/${package.url.name}/NOTICE" />
        </antcall>
		<input
			message="Check the NOTICE for required notices from third-parties. Is it ok?"
            validargs="y,n"
        defaultvalue="y"
        addproperty="notice.ok"/>

		<antcall target="display-text" >
            <param name="file" value="${basedir}/${package.url.name}/LICENSE" />
        </antcall>
		<input
			message="Check the LICENSE for the Apache License and third-party licenses. Is it ok?"
            validargs="y,n"
        defaultvalue="y"
        addproperty="license.ok"/>
    </target>

    <target name="build" depends="copy.downloads">
		<input
			message="The final step is to run the build and any tests the build script runs.  This can take several minutes.  Press y to start the build."
            validargs="y"
        defaultvalue="y" />
        <ant dir="${basedir}/${package.url.name}/ant_on_air" target="main" />
        <ant dir="${basedir}/${package.url.name}" target="build" />
    </target>

    <target name="copy.downloads" if="${do.copy.downloads}" description="instead of actually downloading all of the dependencies, you can save lots of time by just copying from some other folder in some other SDK.">
		<echo>Copying downloads</echo>
        <copy todir="${basedir}/${package.url.name}/in" >
			<fileset dir="${download.cache.dir}" />
		</copy>
    </target>
    	
	<target name="approve" >
		<condition property="vote" value="+1">
			<and>
				<equals arg1="${rat.license.ok}" arg2="y" />
				<equals arg1="${rat.binaries.ok}" arg2="y" />
				<equals arg1="${readme.ok}" arg2="y" />
				<equals arg1="${releasenotes.ok}" arg2="y" />
				<equals arg1="${notice.ok}" arg2="y" />
				<equals arg1="${license.ok}" arg2="y" />
			</and>
		</condition>
		<property name="vote" value="-1" />
		<echo>
${vote}
Package ${package.url.path}/${package.url.name}.${package.suffix}
Java ${ant.java.version}
OS: ${os.name} ${os.arch} ${os.version}
Source kit signatures match: y
Source kit builds: y
README is ok: ${readme.ok}
RELEASE_NOTES is ok: ${releasenotes.ok}
NOTICE is ok: ${notice.ok}
LICENSE is ok: ${license.ok}
No unapproved licenses or archives: ${rat.license.ok}
No unapproved binaries: ${rat.binaries.ok}
		</echo>
		<fail>
			<condition>
	            <equals arg1="-1" arg2="${vote}"/>
			</condition>
		</fail>
	</target>
</project>
