<?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" />

    <!--<property name="commons.zip" value="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" />-->
    <!-- use this one for now until we find a better source -->
    <property name="commons.zip" value="https://github.com/bigosmallm/MakeApacheFlexForFlashBuilder/blob/master/libs/as3commons-zip-1.0.0-alpha.1.swc?raw=true" />
    
    <!--
        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="${commons.zip}"
            dest="${LIBRARY_DIR}/as3commons-zip-1.0.0-alpha.1.swc"
            verbose="true"/>
        <!-- skip checksum until we find a valid file
        <get src="${commons.zip}.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="check-as3httpclient.swc">
        <available file="${LIBRARY_DIR}/as3httpclient.swc" property="as3httpclient.swc.present"/>
    </target>

    <!-- This has a BSD license which is a reciprocal license with the Apache v2 license.  -->
    <target name="get-as3httpclient.swc" depends="check-as3commons.swc" unless="as3httpclient.swc.present"
            description="Download as3httpclient.swc">
        <mkdir dir="${LIBRARY_DIR}"/>
        <get src="https://github.com/quetwo/as3httpclient/releases/download/1.0/as3httpclient.swc"
             dest="${LIBRARY_DIR}/as3httpclient.swc"
             verbose="true"/>
    </target>

    <target name="compile" depends="get-as3commons.swc, get-as3httpclient.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>
