| <?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="ApproveApacheFlexSquiggly" 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="package.suffix" value="zip" /> | 
 | 	 | 
 | 	<property name="rat.report" value="${basedir}/rat-report.txt"/> | 
 | 	<property name="apache.rat.jar" value="apache-rat-0.8.jar" /> | 
 | 	<property name="apache.rat.tasks.jar" value="apache-rat-tasks-0.8.jar" /> | 
 | 	<property name="apache.rat.url" value="http://people.apache.org/~aharui/rat" /> | 
 | 	 | 
 | 	<property name="mac.text.display" value="cat" /> | 
 | 	<property name="win.text.display" value="type" /> | 
 | 	<property name="linux.text.display" value="cat" /> | 
 |      | 
 |     <property file="${basedir}/approvetdf.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=<release version (e.g. 3.1, 3.2, etc)>" | 
 |     unless="release.version"/> | 
 |      | 
 | 	<property name="package.url.path" value="https://repository.apache.org/content/repositories/orgapacheflex-1002/org/apache/flex/flex-tool-api/${release.version}" /> | 
 | 	<property name="package.url.name" value="flex-tool-api-${release.version}-source-release" /> | 
 | 	 | 
 |     <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.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" | 
 |                     depends="download-package, download-md5, download-asc" /> | 
 |                      | 
 |     <target name="download-package" description="download the release package"> | 
 |         <get src="${package.url.path}/${package.url.name}.${package.suffix}" | 
 |             dest="${basedir}/${package.url.name}.${package.suffix}" /> | 
 |     </target> | 
 |     <target name="download-md5" description="download the md5" unless="no.md5" > | 
 |         <get src="${package.url.path}/${package.url.name}.${package.suffix}.md5" | 
 |         dest="${basedir}/${package.url.name}.${package.suffix}.md5" /> | 
 |     </target> | 
 |     <target name="download-asc" description="download the sig" unless="no.asc"> | 
 |         <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" depends="check-md5, check-asc" /> | 
 |      | 
 |     <target name="check-md5" description="check md5 and gpg sigs" unless="no.md5"> | 
 | 		<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" /> | 
 |    </target> | 
 |  | 
 |     <target name="check-asc" description="check gpg sigs" unless="no.asc"> | 
 |         <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="docs/**"/> | 
 |                 <exclude name="CONTRIBUTORS"/> | 
 |                 <exclude name="CONTRIBUTING"/> | 
 |                 <exclude name="**/DEPENDENCIES"/> | 
 |             </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}/flex-tool-api-${release.version}/README" /> | 
 |         	    </not> | 
 | 			</condition> | 
 |         </fail> | 
 |         <fail message="RELEASE_NOTES not in package"> | 
 | 			<condition> | 
 | 				<not> | 
 | 					<available file="${basedir}/${package.url.name}/flex-tool-api-${release.version}/RELEASE_NOTES" /> | 
 | 				</not> | 
 | 			</condition> | 
 |         </fail> | 
 |         <fail message="NOTICE not in package"> | 
 | 			<condition> | 
 | 				<not> | 
 | 					<available file="${basedir}/${package.url.name}/flex-tool-api-${release.version}/NOTICE" /> | 
 | 				</not> | 
 | 			</condition> | 
 |         </fail> | 
 |         <fail message="LICENSE not in package"> | 
 | 			<condition> | 
 | 				<not> | 
 | 					<available file="${basedir}/${package.url.name}/flex-tool-api-${release.version}/LICENSE" /> | 
 | 				</not> | 
 | 			</condition> | 
 |         </fail> | 
 | 		<antcall target="display-text" > | 
 |             <param name="file" value="${basedir}/${package.url.name}/flex-tool-api-${release.version}/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}/flex-tool-api-${release.version}/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}/flex-tool-api-${release.version}/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}/flex-tool-api-${release.version}/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" /> | 
 |         <exec dir="${basedir}/${package.url.name}/flex-tool-api-${release.version}" executable="mvn" > | 
 |             <arg value="-Papache-release" /> | 
 |             <arg value="install" /> | 
 |         </exec> | 
 |     </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> |