<?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="Installer" basedir="." default="build">

    <!--load environment variables prefixed with env -->
    <property environment="env"/>

    <!--location of property file -->
    <property file="${basedir}/local.properties" />
	<condition property="CERT_PASSWORD_FILE" value="${CERT_PASSWORD_FILE_WIN}" >
		<and>
			<not>
				<available file="${CERT_PASSWORD_FILE}" />
			</not>
			<available file="${CERT_PASSWORD_FILE_WIN}" />
		</and>
	</condition>
	<condition property="CERT_PASSWORD_FILE" value="${CERT_PASSWORD_FILE_MAC}" >
		<and>
			<not>
				<available file="${CERT_PASSWORD_FILE}" />
			</not>
			<available file="${CERT_PASSWORD_FILE_MAC}" />
		</and>
	</condition>
	<condition property="RELEASE_KEYSTORE_FILE" value="${RELEASE_KEYSTORE_FILE_WIN}" >
		<and>
			<not>
				<available file="${RELEASE_KEYSTORE_FILE}" />
			</not>
			<available file="${RELEASE_KEYSTORE_FILE_WIN}" />
		</and>
	</condition>
	<condition property="RELEASE_KEYSTORE_FILE" value="${RELEASE_KEYSTORE_FILE_MAC}" >
		<and>
			<not>
				<available file="${RELEASE_KEYSTORE_FILE}" />
			</not>
			<available file="${RELEASE_KEYSTORE_FILE_MAC}" />
		</and>
	</condition>

    <property file="${basedir}/build.properties" description="Properties for Apache Flex SDK Installer project" />
    <property file="${basedir}/build.number"/>
	<property file="${CERT_PASSWORD_FILE}"/>

    <property name="installer.version" value="${release.version}.${build.number}"/>
    <property name="kit.prefix" value="apache-flex-sdk-installer-${installer.version}"/>
    <property name="source.kit" value="${kit.prefix}-src"/>
    <property name="binary.kit" value="${kit.prefix}-bin"/>
    <property name="LOCAL_CONFIG_FILE" value="${basedir}/src/installer/sdk-installer-config-4.0.xml" />

    <!--
        Properties are immutable so value frozen first time property is set.
        If FLEX_HOME is not set with -DFLEX_HOME=/path/to/flex/sdk on the ant command line
        use the environment variable, if it exists. Else if windows, use FLEX_HOME_WIN
        else use FLEX_HOME_MAC, which are both defined in build.properties.
    -->
    <condition property="FLEX_HOME" value="${env.FLEX_HOME}">
        <isset property="env.FLEX_HOME" />
    </condition>
    <condition property="FLEX_HOME" value="${FLEX_HOME_WIN}">
        <os family="windows"/>
    </condition>
    <condition property="FLEX_HOME" value="${FLEX_HOME_MAC}">
        <os family="mac"/>
    </condition>
    <condition property="FLEX_HOME" value="${FLEX_HOME_LINUX}">
        <os family="unix"/>
    </condition>

    <condition property="adl" value="adl.exe">
        <os family="windows"/>
    </condition>

    <condition property="adl" value="adl">
        <os family="mac"/>
    </condition>

    <condition property="runtime" value="win">
        <os family="windows"/>
    </condition>

    <condition property="runtime" value="mac">
        <os family="mac"/>
    </condition>

    <condition property="LOCAL_CONFIG_URL" value="file:///${LOCAL_CONFIG_FILE}">
        <os family="windows"/>
    </condition>
    <property name="LOCAL_CONFIG_URL" value="file://${LOCAL_CONFIG_FILE}" />
    
    <!--
        Properties are immutable so value frozen first time property is set.
        If AIR_HOME is not set on the command line with -DAIR_HOME=/path/to/air/sdk on the
        ant command line use the environment variable, if it exists. Else if windows, use
        AIR_HOME_WIN else use AIR_HOME_MAC, which are both defined in build.properties.
    -->
    <condition property="AIR_HOME" value="${env.AIR_HOME}">
        <isset property="env.AIR_HOME" />
    </condition>
    <condition property="AIR_HOME" value="${AIR_HOME_WIN}">
        <os family="windows"/>
    </condition>
    <condition property="AIR_HOME" value="${AIR_HOME_MAC}">
        <os family="mac"/>
    </condition>
    <condition property="AIR_HOME" value="${AIR_HOME_LINUX}">
        <os family="unix"/>
    </condition>
	
    <condition property="cert_pwd_not_found" >
		<not>
       		<available file="${CERT_PASSWORD_FILE}"/>
		</not>
    </condition>

	<condition property="KEYSTORE" value="${RELEASE_KEYSTORE_FILE}" >
		<available file="${CERT_PASSWORD_FILE}"/>
	</condition>

	<condition property="KEYSTORE" value="temp.p12" >
		<not>
			<available file="${CERT_PASSWORD_FILE}"/>
		</not>
	</condition>

    <condition property="CERT_PASSWORD" value="${TEMP_PASS_CHANGE_THIS}" >
		<not>
       		<available file="${CERT_PASSWORD_FILE}"/>
		</not>
    </condition>

    <!-- compilers -->
    <property name="ADL" value="${AIR_HOME}/bin/adl"/>
    <property name="ADT" value="${AIR_HOME}/lib/adt.jar"/>

    <!-- additional tasks - mxmlc tag -->
    <path id="flexTasks.path">
        <fileset dir="${FLEX_HOME}">
            <include name="lib/flexTasks.jar" />
            <include name="ant/lib/flexTasks.jar" />
        </fileset>
    </path>
    <taskdef resource="flexTasks.tasks" classpathref="flexTasks.path"/>

    <!--
        Optional jars but should be in place for a real release build.

        For <rat> apache-rat-0.8.jar and apache-rat-tasks-0.8.jar should be in classpath.
        See rat-report.
    -->
    <path id="anttask.classpath">
        <fileset dir="${env.ANT_HOME}/lib">
           <include name="**/apache-rat*.jar"/>
        </fileset>
        <fileset dir="${user.home}">
           <include name=".ant/lib/**/apache-rat*.jar"/>
        </fileset>
    </path>

    <!-- AIR package extension -->
    <condition property="extension" value="exe">
        <os family="windows" />
    </condition>
    <condition property="extension" value="dmg">
        <os family="mac" />
    </condition>
    <condition property="extension" value="deb">
        <os family="unix" />
    </condition>

    <target name="build" depends="init,certificate,compile,packagenative,cleanup"
        description="Compiles and packages application"/>

    <target name="release" depends="clean,build,source-package,rat-report,sign,copy-misc"
        description="Build the application and package up the distros for release."/>

    <target name="init" depends="clean,createDirs,update-version-in-xml-files"
        description="Creates the deploy folders and sets app extension"/>

    <target name="clean" description="Cleans up old files.">
        <delete dir="${BUILD_DIR}" failOnError="false" includeEmptyDirs="true" />
        <delete dir="${LIBRARY_DIR}" failOnError="false" includeEmptyDirs="true" />
        <delete dir="${RELEASE_DIR}" failOnError="false" includeEmptyDirs="true" />
        <delete file="${basedir}/rat.report" failOnError="false"/>
    </target>

    <target name="cleanup" description="Cleans up old files." unless="no.cleanup">
        <delete dir="${BUILD_DIR}" failOnError="false" includeEmptyDirs="true" />
    </target>

    <target name="createDirs">
        <echo>***************************************${line.separator}Execute the update-version target once,${line.separator}and only once, when you modifiy this app.${line.separator}This will increment the version number to allow${line.separator}the app to be updated by the AIR installer.${line.separator}***************************************
        </echo>
        <mkdir dir="${BUILD_DIR}"/>
        <mkdir dir="${RELEASE_DIR}"/>
    </target>

    <!-- Make sure version, esp, build.number, in APP_NAME-app.xml is in sync.  -->
    <target name="update-version-in-xml-files" description="Update version in APP_NAME-app.xml.">
        <echo message="version in ${APP_NAME}-app.xml will be ${installer.version}"/>
        <replaceregexp byline="true">
            <regexp pattern="&lt;versionNumber&gt;(\d+\.)?(\d+\.)?(\d+)&lt;/versionNumber&gt;"/>
            <substitution expression="&lt;versionNumber&gt;${installer.version}&lt;/versionNumber&gt;"/>
            <fileset dir="${SOURCE_DIR}">
                <include name="${APP_NAME}-app.xml"/>
            </fileset>
        </replaceregexp>
		<replaceregexp byline="true">
            <regexp pattern="&lt;latest&gt;(\d+\.)?(\d+\.)?(\d+)&lt;/latest&gt;"/>
            <substitution expression="&lt;latest&gt;${installer.version}&lt;/latest&gt;"/>
            <fileset dir="${SOURCE_DIR}">
                <include name="${APP_CONFIG_XML_NAME}.xml"/>
            </fileset>
        </replaceregexp>
    </target>

    <!--
        Run this target once, and then rebuild, when you make a change to this app
        so that the AIR Installer will allow the app to be updated. The build.number
        property in the file build.property will be read and then incremented and the
        nano version number in the <version> tag in InstallApacheFlex-app.xml will be
        updated.
    -->
    <target name="update-version" description="Update the app version number so the installer will be updated.">
         <tstamp>
            <format property="touch.year" pattern="yyyy"/>
        </tstamp>

        <propertyfile file="build.number"
            comment="Copyright ${touch.year} The Apache Software Foundation.">
            <entry key="build.number" type="int" default="0" operation="+"/>
        </propertyfile>

    </target>

    <target name="packagenative" depends="packageair"
       description="Packages the AIR file from the build directory to create a native installer (exe/dmg) file">

       <java jar="${ADT}" fork="true"
           failonerror="true"
           maxmemory="512m">
           <arg value="-package"/>
           <arg value="-target"/>
           <arg value="native"/>
		   <arg value="${RELEASE_DIR}/${binary.kit}.${extension}"/>
           <arg value="${BUILD_DIR}/${APP_NAME}.air"/>
       </java>
   </target>

    <target name="check-as3commons.swc">
        <available file="${LIBRARY_DIR}/as3commons-zip-1.0.0-alpha.1.swc" property="as3commons.swc.present"/>
    </target>

    <!-- This has a BSD license which is a reciprocal license with the Apache v2 license.  -->
    <target name="get-as3commons.swc" depends="check-as3commons.swc" unless="as3commons.swc.present"
        description="Download as3commons.swc and fail if checksum mismatch.">
        <mkdir dir="${LIBRARY_DIR}"/>
        <get src="http://projects.yoolab.org/maven/content/repositories/releases/org/as3commons/as3commons-zip/1.0.0-alpha.1/as3commons-zip-1.0.0-alpha.1.swc"
            dest="${LIBRARY_DIR}/as3commons-zip-1.0.0-alpha.1.swc"
            verbose="true"/>
        <get src="http://projects.yoolab.org/maven/content/repositories/releases/org/as3commons/as3commons-zip/1.0.0-alpha.1/as3commons-zip-1.0.0-alpha.1.swc.md5"
            dest="${LIBRARY_DIR}/as3commons-zip-1.0.0-alpha.1.swc.md5"
            verbose="true"/>
        <checksum file="${LIBRARY_DIR}/as3commons-zip-1.0.0-alpha.1.swc" algorithm="md5" verifyProperty="isMD5ok"/>
        <delete file="${LIBRARY_DIR}/as3commons-zip-1.0.0-alpha.1.swc.md5" failOnError="false"/>
        <fail message="Checksum failure for ${LIBRARY_DIR}/as3commons-zip-1.0.0-alpha.1.swc">
            <condition>
                <isfalse value="${isMD5ok}"/>
            </condition>
        </fail>
    </target>

    <target name="compile" depends="get-as3commons.swc"
        description="Compiles the AIR application to a SWF file and places SWF in a temp directory to be packaged.">
        <mxmlc file="${SOURCE_DIR}/${APP_NAME}.${APP_EXTENSION}"
            output="${BUILD_DIR}/${APP_NAME}.swf"
            static-rsls="true"
            accessible="true"
            configname="air"
            debug="${DEBUG_FLAG}"
            failonerror="true"
            fork="true"
            link-report="${BUILD_DIR}/${APP_NAME}.lnk.xml"
            maxmemory="512m">
            <source-path path-element="${SOURCE_DIR}"/>
            <source-path path-element="${COMMON_SOURCE_DIR}"/>
            <external-library-path file="${AIR_HOME}/frameworks/libs/air/airglobal.swc" append="true"/>
            <library-path dir="${LIBRARY_DIR}" includes="*.swc" append="true"/>
            <library-path dir="${ANT_ON_AIR_DIR}" includes="*.swc" append="true"/>
            <define name="INSTALLER::releaseVersion" value="${release.version}"/>
            <define name="INSTALLER::buildNumber" value="${build.number}"/>
        </mxmlc>
    </target>

    <!-- Make sure to use the same certificate each time so we can update the app. -->
    <target name="certificate" if="cert_pwd_not_found">
        <antcall target="generate-certificate"/>
    </target>

    <target name="generate-certificate">
    	<echo message="Using cert ${KEYSTORE}" />
        <java jar="${ADT}" fork="true"
            failonerror="true">
            <arg value="-certificate"/>
            <arg value="-cn"/>
            <arg value="${CERT_NAME}"/>
            <arg value="-ou"/>
            <arg value="${CERT_ORG_UNIT}"/>
            <arg value="-o"/>
            <arg value="${CERT_ORG_NAME}"/>
            <arg value="-c"/>
            <arg value="${CERT_COUNTRY}"/>
            <arg value="${CERT_KEY_TYPE}"/>
            <arg value="${KEYSTORE}"/>
            <arg value="${CERT_PASSWORD}"/>
        </java>
    </target>

    <target name="packageair"
        description="Packages the build SWF file from a temp directory to create an AIR file">
    	<echo message="Using cert ${KEYSTORE}" />
        <java jar="${ADT}" fork="true"
            failonerror="true"
            maxmemory="512m">
            <arg value="-package"/>
            <arg value="-storetype"/>
            <arg value="${STORETYPE}"/>
            <arg value="-keystore"/>
            <arg value="${KEYSTORE}"/>
            <arg value="-storepass"/>
            <arg value="${CERT_PASSWORD}"/>
            <arg value="${BUILD_DIR}/${APP_NAME}.air"/>
            <arg value="${SOURCE_DIR}/${APP_NAME}-app.xml"/>
            <arg value="-C"/>
            <arg value="${BUILD_DIR}"/>
            <arg value="${BUILD_DIR}/${APP_NAME}.swf"/>
            <arg value="-C"/>
            <arg value="${SOURCE_DIR}"/>
            <arg value="${SOURCE_DIR}/${APP_CONFIG_XML_NAME}.xml"/>
            <arg value="${ASSETS_DIR}"/>
        </java>
    </target>

	<target name="copy-misc" description="Copy config files to release directory">
		<copy file="${basedir}/README" tofile="${RELEASE_DIR}/READme"/>
	</target>

    <!--
        Packages the source distribution with ZIP and TAR_GZIP.
        The source file line endings match the package type.
    -->
    <target name="source-package" description="Package source files.">
        <mkdir dir="${BUILD_DIR}/temp"/>
        <copy todir="${BUILD_DIR}/temp/${COMMON_PROJECT_NAME}" includeEmptyDirs="false">
			<fileset dir="${COMMON_PROJECT_DIR}">
				<exclude name="*.p12"/>
				<exclude name="*.password"/>
                <exclude name="rat.report"/>
                <exclude name="libs/**"/>
				<exclude name="bin/**"/>
				<exclude name="bin-debug/**"/>
                <exclude name="release/**"/>
				<exclude name=".settings/**"/>
				<exclude name="**/.actionScriptProperties"/>
                <exclude name="**/.flexProperties"/>
				<exclude name="**/.flexLibProperties"/>
                <exclude name="**/.project"/>
                <exclude name="**/.idea/**"/>
            </fileset>
        </copy>

        <copy todir="${BUILD_DIR}/temp/ant_on_air" includeEmptyDirs="false">
            <fileset dir="${basedir}/../ant_on_air">
                <include name="build.properties" />
                <include name="build.xml" />
            </fileset>
        </copy>
        <copy todir="${BUILD_DIR}/temp/ant_on_air/src" includeEmptyDirs="false">
            <fileset dir="${basedir}/../ant_on_air/src">
            </fileset>
        </copy>
        <copy todir="${BUILD_DIR}/temp/ant_on_air/locale" includeEmptyDirs="false">
            <fileset dir="${basedir}/../ant_on_air/locale">
            </fileset>
        </copy>
        <copy todir="${BUILD_DIR}/temp/ant_on_air/tests" includeEmptyDirs="false">
            <fileset dir="${basedir}/../ant_on_air/tests">
                <exclude name="*.swf" />
            </fileset>
        </copy>

        <copy todir="${BUILD_DIR}/temp/${INSTALLER_PROJECT_NAME}" includeEmptyDirs="false">
			<fileset dir="${basedir}">
				<exclude name="*.p12"/>
				<exclude name="*.password"/>
                <exclude name="rat.report"/>
                <exclude name="libs/**"/>
				<exclude name="bin/**"/>
				<exclude name="bin-debug/**"/>
				<exclude name="build/**"/>
                <exclude name="release/**"/>
				<exclude name="rc/**"/>
				<exclude name=".settings/**"/>
				<exclude name="**/.actionScriptProperties"/>
                <exclude name="**/.flexProperties"/>
				<exclude name="**/.flexLibProperties"/>
                <exclude name="**/.project"/>
                <exclude name="**/.idea/**"/>
				<exclude name="local.properties"/>
				<!-- These are bumped up to the top-level release directory.  -->
                <exclude name="DISCLAIMER"/>
                <exclude name="LICENSE"/>
                <exclude name="NOTICE"/>
                <exclude name="README"/>
                <exclude name="RELEASE_GUIDE"/>
                <exclude name="RELEASE_NOTES"/>
			</fileset>
        </copy>

		<!-- Bump these up to the top-level release directory.  -->
		<copy todir="${BUILD_DIR}/temp" includeEmptyDirs="false">
			<fileset dir="${basedir}">
                <include name="DISCLAIMER"/>
                <include name="LICENSE"/>
                <include name="NOTICE"/>
                <include name="README"/>
                <include name="RELEASE_GUIDE"/>
                <include name="RELEASE_NOTES"/>
			</fileset>
        </copy>

        <fixcrlf srcdir="${BUILD_DIR}/temp" eol="crlf" encoding="UTF8" excludes="**/assets/**,**/*.ttf,**/*.png" fixlast="false"/>

        <mkdir dir="${RELEASE_DIR}"/>
        <zip destfile="${RELEASE_DIR}/${source.kit}.zip"
            basedir="${BUILD_DIR}/temp"/>

        <fixcrlf srcdir="${BUILD_DIR}/temp" eol="unix" encoding="UTF8" excludes="**/assets/**,**/*.ttf,**/*.png" fixlast="false"/>

        <tar destfile="${RELEASE_DIR}/${source.kit}.tar.gz"
            compression="gzip"
            basedir="${BUILD_DIR}/temp"/>

        <delete dir="${BUILD_DIR}/temp"/>
		<delete dir="${BUILD_DIR}"/>
    </target>

    <!--
        Packages the binary distribution with ZIP and TAR_GZIP.
    -->
    <target name="binary-package" description="Package binary files.">
        <mkdir dir="${RELEASE_DIR}"/>

        <zip destfile="${RELEASE_DIR}/${binary.kit}.zip">
            <fileset dir="${basedir}/release">
                <exclude name="**/*.zip"/>
                <exclude name="**/*.tar*"/>
            </fileset>
        </zip>

        <tar destfile="${RELEASE_DIR}/${binary.kit}.tar.gz" compression="gzip">
          <zipfileset src="${RELEASE_DIR}/${binary.kit}.zip"/>
        </tar>
    </target>

	<!--
	    Run the Apache Rat audit tool against the source in the source kit.
	    The report is written to rat.report.

	    You need to place apache-rat-tasks-0.8.jar and apache-rat-0.8.jar in the
	    anttask.classpath in order to do this.  If the jar isn't found, the report
	    will not be generated.
	-->
    <target name="rat-report" depends="rat-taskdef" if="have.rattasks"
        description="Report on licenses in source kit.">

        <!-- Unzip the source kit -->
        <unzip src="${RELEASE_DIR}/${source.kit}.zip" dest="${RELEASE_DIR}/temp"/>

        <property name="rat.dir" value="${RELEASE_DIR}/temp"/>

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

        <rat:report xmlns:rat="antlib:org.apache.rat.anttasks"
            reportFile="${basedir}/rat.report">
            <fileset dir="${rat.dir}">
                <exclude name="**/Apache License Version 2.txt"/>
                <!--          Start of source files           -->
                <!-- Apache Category A: Authorized Licenses -->
                <!-- "New BSD License" aka Modified BSD License" aka "BSD 3-Clause License" -->
                <exclude name="${INSTALLER_PROJECT_NAME}/src/com/adobe/crypto/MD5Stream.as"/>
                <exclude name="${INSTALLER_PROJECT_NAME}/src/com/adobe/utils/IntUtil.as"/>
                <!-- generated source files that don't have Apache v2 license header -->
                <exclude name="**/build.number"/>
                <exclude name="**/.actionScriptProperties"/>
                <exclude name="**/.flexProperties"/>
				<exclude name="**/.flexLibProperties"/>
                <exclude name="**/.project"/>
                <exclude name="**/.fxpProperties"/>
                <exclude name="**/.settings/**"/>
                <exclude name="**/.idea/**"/>
                <exclude name="**/*.iml"/>
                <!--          End of source files           -->
                <!--          Start of binary files           -->
                <!-- exclude media (png, ico) -->
                <exclude name="**/*.ico"/>
                <exclude name="**/*.png"/>
                <!-- exclude fonts -->
                <exclude name="**/*.ttf"/>
                <!--          End of binary files           -->
            </fileset>
        </rat:report>

        <delete dir="${RELEASE_DIR}/temp" failOnError="false"/>
    </target>

    <target name="rat-taskdef" description="Rat taskdef">
        <available property="have.rattasks"
            resource="org/apache/rat/anttasks/antlib.xml"
            classpathref="anttask.classpath"/>

        <antcall target="have-rattasks"/>
        <antcall target="no-rattasks"/>
    </target>

    <target name="have-rattasks" if="have.rattasks">
        <typedef resource="org/apache/rat/anttasks/antlib.xml"
                 uri="antlib:org.apache.rat.anttasks"
                 classpathref="anttask.classpath"/>
    </target>

    <target name="no-rattasks" unless="have.rattasks">
        <echo message="Rat report not generated."/>
        <echo message="rat jars (apache-rat-*.jar, apache-rat-tasks-*.jar)"/>
        <echo message="not found in anttask.classpath"/>
    </target>

	<target name="sign" >
		<checksum file="${RELEASE_DIR}/${source.kit}.zip" algorithm="md5" forceOverwrite="yes" />

		<exec executable="gpg">
			<arg value="--armor" />
			<arg value="--output" />
			<arg value="${RELEASE_DIR}/${source.kit}.zip.asc" />
			<arg value="--detach-sig" />
			<arg value="${RELEASE_DIR}/${source.kit}.zip" />
		</exec>

		<checksum file="${RELEASE_DIR}/${source.kit}.tar.gz" algorithm="md5" forceOverwrite="yes" />

		<exec executable="gpg">
			<arg value="--armor" />
			<arg value="--output" />
			<arg value="${RELEASE_DIR}/${source.kit}.tar.gz.asc" />
			<arg value="--detach-sig" />
			<arg value="${RELEASE_DIR}/${source.kit}.tar.gz" />
		</exec>

		<checksum file="${RELEASE_DIR}/${binary.kit}.${extension}" algorithm="md5" forceOverwrite="yes" />

		<exec executable="gpg">
			<arg value="--armor" />
			<arg value="--output" />
			<arg value="${RELEASE_DIR}/${binary.kit}.${extension}.asc" />
			<arg value="--detach-sig" />
			<arg value="${RELEASE_DIR}/${binary.kit}.${extension}" />
		</exec>
	</target>

	<target name="sign_exe" description="sign exe when on mac" >
		<checksum file="${RELEASE_DIR}/${binary.kit}.exe" algorithm="md5" forceOverwrite="yes" />

		<exec executable="gpg">
			<arg value="--armor" />
			<arg value="--output" />
			<arg value="${RELEASE_DIR}/${binary.kit}.exe.asc" />
			<arg value="--detach-sig" />
			<arg value="${RELEASE_DIR}/${binary.kit}.exe" />
		</exec>
	</target>

	<target name="sign_dmg" description="sign dmg when on win" >
		<checksum file="${RELEASE_DIR}/${binary.kit}.dmg" algorithm="md5" forceOverwrite="yes" />

		<exec executable="gpg">
			<arg value="--armor" />
			<arg value="--output" />
			<arg value="${RELEASE_DIR}/${binary.kit}.dmg.asc" />
			<arg value="--detach-sig" />
			<arg value="${RELEASE_DIR}/${binary.kit}.dmg" />
		</exec>
	</target>
	
    <target name="debug" >
        <copy file="${SOURCE_DIR}/${APP_NAME}-app.xml" todir="${BUILD_DIR}" />
        <mkdir dir="${BUILD_DIR}/installer" />
        <exec executable="${AIR_HOME}/bin/${adl}" dir="${BUILD_DIR}" failonerror="true">
            <arg value="-runtime" />
            <arg value="${AIR_HOME}/runtimes/air/${runtime}" />
            <arg value="${BUILD_DIR}/${APP_NAME}-app.xml" />
            <arg value="--" />
            <arg value="-config=${LOCAL_CONFIG_URL}" />
        </exec>
    </target>

    <target name="debug-locale" >
        <copy file="${SOURCE_DIR}/${APP_NAME}-app.xml" todir="${BUILD_DIR}" />
        <mkdir dir="${BUILD_DIR}/installer" />
        <exec executable="${AIR_HOME}/bin/${adl}" dir="${BUILD_DIR}" failonerror="true">
            <arg value="-runtime" />
            <arg value="${AIR_HOME}/runtimes/air/${runtime}" />
            <arg value="${BUILD_DIR}/${APP_NAME}-app.xml" />
            <arg value="--" />
            <arg value="-config=${LOCAL_CONFIG_URL}" />
            <arg value="-language=${TEST_LOCALE}" />
        </exec>
    </target>

    <target name="debug-for-real" >
        <copy file="${SOURCE_DIR}/${APP_NAME}-app.xml" todir="${BUILD_DIR}" />
        <mkdir dir="${BUILD_DIR}/installer" />
        <exec executable="${AIR_HOME}/bin/${adl}" dir="${BUILD_DIR}" failonerror="true">
            <arg value="-runtime" />
            <arg value="${AIR_HOME}/runtimes/air/${runtime}" />
            <arg value="${BUILD_DIR}/${APP_NAME}-app.xml" />
        </exec>
    </target>
</project>
