<?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="framework" default="main" basedir=".">

    <property name="royale.jenkins.home" value="${basedir}/jenkins" />
    
    <property name="jflex.temp.filename" value="${royale.jenkins.home}/temp/JFlex.zip" />
    <property name="jflex.filename" value="jflex-1.4.3" />
    <property name="jflex.root" value="${royale.jenkins.home}/JFlex" />
    <property name="jflex.home" value="${jflex.root}/${jflex.filename}/lib" />

    <!-- (erikdebruin) Hard coded path for Windows, sorry ;-) -->
    <property name="closure.root" location="C:/Google/Closure/Library" />

    <target name="main" depends="clean,init,jflex-download,closure-lib-download,env-properties"/>

    <target name="init">
        <mkdir dir="${royale.jenkins.home}" />
        <mkdir dir="${royale.jenkins.home}/temp"/>
        <mkdir dir="${jflex.root}" />
        
        <mkdir dir="${closure.root}" />
    </target>

    <!-- remove someday -->
    <target name="clear.sdk.lock" >
    </target>
    
    <target name="jflex-download" description="Copies JFlex from JFlex website">
        <echo message="Be patient. This takes a few minutes..." />
        <get src="https://jflex.de/${jflex.filename}.zip" dest="${jflex.temp.filename}" verbose="false" />
        <unzip dest="${jflex.root}" src="${jflex.temp.filename}" />
    </target>

    <target name="closure-lib-download" description="Copies Closure Library from GitHub">
        <echo message="Be patient. This takes a few minutes..." />
        <exec executable="git" failifexecutionfails="true">
            <arg value="clone" />
            <arg value="https://github.com/google/closure-library" />
            <arg value="${closure.root}" />
        </exec>
        <echo>Cloned fresh copy of Google Closure Library</echo>
    </target>

    <target name="clean" description="Cleans third party downloaded files.">
        <delete dir="${royale.jenkins.home}/temp" />

        <delete dir="${jflex.root}" />

        <delete dir="${closure.root}" />
        
        <delete dir="${basedir}" failonerror="false">
            <include name="**/hs_err*"/>
            <include name="**/replay_pid*"/>
        </delete>
     </target>
    
    <target name="check-env" >
        <available file="${basedir}/env.properties" type="file"
            property="env.available" />
    </target>
    
    <target name="env-properties" depends="check-env" unless="env.available" >
        <echo file="${basedir}/env.properties">env.ASJS_HOME=${env.ASJS_HOME}</echo>
        <!-- windows needs backslashes escaped -->
        <replaceregexp file="${basedir}/env.properties" match="\\" replace="\\\\\\\\" flags="g" />
    </target>

</project>
