<?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="jasmine" default="main" basedir=".">
    
    <property name="ROYALE_HOME" value="${basedir}/.." />
    
    <condition property="ROYALE_COMPILER_HOME" value="${env.ROYALE_COMPILER_HOME}">
        <and>
            <not>
                <isset property="ROYALE_COMPILER_HOME" />
            </not>
            <available file="${env.ROYALE_COMPILER_HOME}/lib/compiler-mxmlc.jar" type="file" />
        </and>
    </condition>
    
    <condition property="ROYALE_COMPILER_HOME" value="${ROYALE_HOME}/../royale-compiler/compiler">
        <and>
            <not>
                <isset property="ROYALE_COMPILER_HOME" />
            </not>
            <available file="${ROYALE_HOME}/../royale-compiler/compiler/lib/compiler-mxmlc.jar" type="file" />
        </and>
    </condition>
    
    <condition property="ROYALE_COMPILER_HOME" value="${ROYALE_HOME}">
        <and>
            <not>
                <isset property="ROYALE_COMPILER_HOME" />
            </not>
            <available file="${ROYALE_HOME}/lib/compiler-mxmlc.jar" type="file" />
        </and>
    </condition>
    
    <condition property="ROYALE_TRANSPILER_HOME" value="${env.ROYALE_TRANSPILER_HOME}">
        <and>
            <not>
                <isset property="ROYALE_TRANSPILER_HOME" />
            </not>
            <available file="${env.ROYALE_TRANSPILER_HOME}/lib/jsc.jar" type="file" />
        </and>
    </condition>
    
    <condition property="ROYALE_TRANSPILER_HOME" value="${ROYALE_HOME}/js">
        <and>
            <not>
                <isset property="ROYALE_TRANSPILER_HOME" />
            </not>
            <available file="${ROYALE_HOME}/js/lib/jsc.jar" type="file" />
        </and>
    </condition>
    
    <condition property="ROYALE_TRANSPILER_HOME" value="${ROYALE_HOME}/../royale-compiler/compiler-jx">
        <and>
            <not>
                <isset property="ROYALE_TRANSPILER_HOME" />
            </not>
            <available file="${ROYALE_HOME}/../royale-compiler/compiler-jx/lib/jsc.jar" type="file" />
        </and>
    </condition>
        
    <tstamp>
        <format property="royale.swc-date" pattern="MM/dd/yy HH:mm Z"/>
    </tstamp>
    <echo>swc-date is ${royale.swc-date}</echo>
    
    <target name="main" depends="preprocess, externc, postprocess, compc" />

    <target name="preprocess">
        <mkdir dir="${basedir}/target/downloads" />
        <get src="https://raw.githubusercontent.com/royale-extras/closure-compiler/royale/contrib/externs/jasmine-2.0.js" dest="${basedir}/target/downloads/jasmine-2.0.js" skipexisting="true" ignoreerrors="true"/>
        <antcall target="get-from-cache-if-needed" >
            <param name="srcFile" value="jasmine-2.0.js" />
            <param name="destFile" value="jasmine-2.0.js" />
            <param name="destDir" value="${basedir}/target/downloads" />
        </antcall>
        <antcall target="fail-if-not-found" >
            <param name="destFile" value="jasmine-2.0.js" />
            <param name="destDir" value="${basedir}/target/downloads" />
        </antcall>
    </target>
    
    <target name="externc" >
        <java jar="${ROYALE_TRANSPILER_HOME}/lib/externc.jar" fork="true"
            failonerror="true">
            <arg value="+royalelib=externs" />
            <arg value="-debug" />
            <arg value="-load-config=${basedir}/src/main/config/externc-config.xml" />
        </java>
    </target>
    
    <target name="postprocess" >
    </target>
    
    <target name="compc" >
        <copy file="${basedir}/src/main/config/compile-as-config.xml"
        todir="${basedir}/target" />
        <java jar="${ROYALE_COMPILER_HOME}/lib/compiler-compc.jar" fork="true"
            failonerror="true">
            <arg value="+royalelib=externs/frameworks" />
            <arg value="-external-library-path+=${basedir}/../js/target/js.swc" />
            <arg value="-load-config=${basedir}/target/compile-as-config.xml" />
            <arg line="-metadata.date=&quot;${royale.swc-date}&quot;" />
            <arg line="-metadata.dateFormat=&quot;MM/dd/yy HH:mm Z&quot;" />
            <arg value="-output=${basedir}/target/jasmine.swc" />
        </java>
    </target>
    
    <target name="clean">
        <delete failonerror="false" includeEmptyDirs="true" >
            <fileset dir="${basedir}/target">
                <include name="**/**"/>
                <exclude name="downloads/**"/>
            </fileset>
        </delete>
    </target>
    
    <target name="wipe">
        <delete failonerror="false" includeEmptyDirs="true" >
            <fileset dir="${basedir}/target">
                <include name="**/**"/>
            </fileset>
        </delete>
    </target>

    <target name="fail-if-not-found">
        <fail message="${destDir}/${destFile} could not be downloaded or found in cache">
            <condition>
                <not>
                    <available file="${destDir}/${destFile}" />
                </not>
            </condition>
        </fail>
    </target>

    <target name="double-check-file" >
        <echo>${env.ROYALE_DOWNLOAD_CACHE}</echo>
        <condition property="still-no-file" value="true">
            <and>
                <not>
                    <available file="${destDir}/${destFile}" />
                </not>
                <isset property="env.ROYALE_DOWNLOAD_CACHE" />
            </and>
        </condition>
        <echo>Need file: ${still_no_file}</echo>
    </target>
    <target name="get-from-cache-if-needed" depends="double-check-file" if="still-no-file">
        <copy file="${env.ROYALE_DOWNLOAD_CACHE}/${srcFile}" tofile="${destDir}/${destFile}" />
    </target>

</project>
