<?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="google_maps" default="main" basedir=".">
    
    <property name="google_maps.version" value="3.11" />
    
    <target name="main" depends="preprocess, externc, postprocess, compc" />
    
    <target name="preprocess" depends="download">
        <exec executable="git" dir="${basedir}/../..">
            <arg value="apply"/>
            <arg value="--ignore-whitespace"/>
            <arg value="--whitespace=nowarn"/>
            <arg value="${basedir}/src/main/patch/google_maps.patch"/>
        </exec>
    </target>
    
    <!-- we need to insert a line near the beginning of the file to make the
         compiler happy. -->
    <target name="make_patch" depends="download">
        <mkdir dir="${basedir}/target/reference" />
        <copy todir="${basedir}/target/reference" file="${basedir}/target/downloads/google_maps_api_v3_11.js" />
        <antcall target="preprocessfile" >
            <param name="file" value="google_maps_api_v3_11.js" />
        </antcall>
        <antcall target="diff" />
    </target>

    <target name="download" >
        <mkdir dir="${basedir}/target/downloads" />
        <get src="https://raw.githubusercontent.com/google/closure-compiler/master/contrib/externs/maps/google_maps_api_v3_11.js" dest="${basedir}/target/downloads/google_maps_api_v3_11.js" />
    </target>
    
    <target name="preprocessfile" >
        <basename property="file.base" file="${file}" suffix=".js"/>
        <echo>file.base is ${file.base}</echo>
        <replace file="${basedir}/target/downloads/${file}" token="// Namespace" value="/** @const */" />
        <replace file="${basedir}/target/downloads/${file}">
        	<replacetoken>google.maps = {};</replacetoken>
        	<replacevalue><![CDATA[
/** @const */
var google = {};

/** @const */
google.maps = {};]]></replacevalue>
        </replace>
    </target>
    
    <target name="diff" >
        <delete dir="${basedir}/src/main/patch" />
        <mkdir dir="${basedir}/src/main/patch" />
        <exec executable="git" output="${basedir}/src/main/patch/google_maps.patch" >
            <arg value="diff"/>
            <arg value="--no-index"/>
            <arg value="--"/>
            <arg value="${basedir}/target/reference"/>
            <arg value="${basedir}/target/downloads"/>
        </exec>
        <replace file="${basedir}/src/main/patch/google_maps.patch" token="target/reference" value="target/downloads" />
        <replace file="${basedir}/src/main/patch/google_maps.patch" token="${basedir}/target/downloads" value="/externs/google_maps/target/downloads" />
    </target>

    <target name="externc" >
        <java jar="${basedir}/../../compiler-jx/lib/externc.jar" fork="true"
            failonerror="false">
            <arg value="+flexlib=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="${basedir}/../../compiler/lib/falcon-compc.jar" fork="true"
            failonerror="true">
            <arg value="+flexlib=externs/frameworks" />
            <arg value="-debug" />
            <arg value="-external-library-path+=${basedir}/../js/target/js.swc" />
            <arg value="-load-config=${basedir}/target/compile-as-config.xml" />
            <arg value="-output=${basedir}/target/google_maps.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>

</project>
