<!--
 * 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="build" default="build-help" basedir=".">

    <!-- ============================================================
         set properties
         ============================================================ -->

    <property file="personal.properties" />
    <property file="build.properties" />
    <property file="vendor.properties" />

    <!-- hint: override in your personal.properties -->
    <property name="BUILDER" value="The Unknown Builder"/>

    <basename property="ant.file.basename" file="${ant.file}"/>

    <available property="VENDOR_FOUND"   file="${VENDOR}"/>

    <tstamp>
        <format property="TSTAMP_STARTED" pattern="HH:mm:ss"/>
    </tstamp>

    <!--
    <tstamp>
        <format property="BUILD_DATE" pattern="yyyy-MM-dd__HH-mm-ss" timezone="GMT"/>
    </tstamp>
    -->
    
    <exec executable="node" outputproperty="BUILD_DATE">
        <arg value="-e"/>
        <arg value="console.log((new Date()).valueOf().toString(36).toUpperCase())"/>
    </exec>

    <condition property="BUILD_VERSION" value="${WEINRE_VERSION}-${BUILD_DATE}-incubating">
        <matches pattern=".*pre$" string="${WEINRE_VERSION}"/>
    </condition>
    
    <condition property="BUILD_VERSION" value="${WEINRE_VERSION}-incubating">
        <not>
            <matches pattern=".*pre$" string="${WEINRE_VERSION}"/>
        </not>
    </condition>
    
    <property name="ARCH-SRC" value="apache-cordova-weinre-${BUILD_VERSION}-src"/>
    <property name="ARCH-BIN" value="apache-cordova-weinre-${BUILD_VERSION}-bin"/>
    <property name="ARCH-DOC" value="apache-cordova-weinre-${BUILD_VERSION}-doc"/>

    <!-- ============================================================
         print some help
         ============================================================ -->

    <target name="help">
        <echo>
ant targets available:
   [default]         - runs `build-help`
   build             - runs a development-time build
   build-archives    - runs `build-clean`, then builds archives
   build-archives-ck - runs `build-archives`, then builds
                       checksum files
   build-help        - prints a line about available help, then
                       runs `build`
   build-clean       - runs `clean` then `build`
   clean             - removes transient build files
   
the file `personal.properties` must be available in the same 
directory as this ant file.  Use the file
`sample.personal.properties` as a template.

To update the weinre dependencies, use
   ant -f update-vendor.xml
</echo>
    </target>

    
    <!-- ============================================================
         do a build, but print message about help
         ============================================================ -->

    <target name="build-help">
        <echo message="to see commands available, use `ant help`"/>
        <antcall target="build"/>
    </target>

    
    <!-- ============================================================
         do a clean build
         ============================================================ -->

    <target name="build-clean" depends="clean,build">
    </target>

    <!-- ============================================================
         clean
         ============================================================ -->

    <target name="clean">
        <delete dir="${OUT}"/>
        <delete dir="${TMP}"/>
        <delete dir="${WEB}"/>
        <delete dir="${CACHED}"/>
    </target>

    <!-- ============================================================
         development-time build
         ============================================================ -->

    <target name="build">
        <fail>
            <condition>
                <not>
                    <resourceexists>
                        <file file="personal.properties"/>
                    </resourceexists>
                </not>
            </condition>
            The file 'personal.properties' was not found; create one based on 'sample.personal.properties'.
        </fail>

        <echo>building version ${BUILD_VERSION}</echo>

        <mkdir  dir="${OUT}"/>
        <delete includeemptydirs="true">
            <fileset dir="${OUT}" includes="**/*" excludes="build-done.txt"/>
        </delete>        
        
        <exec 
            executable           = "git" 
            outputproperty       = "git-log" 
            failifexecutionfails = "false"
            >
            <arg line="log -1 --pretty=oneline"/>
        </exec>

        <condition property="git-log" value="no git status available">
            <not>
                <isset property="git-log"/>
            </not>
        </condition>
        
        <property
            name  = "build-info-text"
            value = "weinre build ${BUILD_VERSION} by ${BUILDER}"
        />
        
        <concat 
            append      = "no"  
            destfile    = "${OUT}/build-info.txt"
            >${build-info-text}
</concat> <!-- keep this outdented, since Ant is so wonderful -->
            
        <concat 
            append      = "yes" 
            fixlastline = "yes"  
            eol         = "lf"
            destfile    = "${OUT}/build-info.txt"
            >git: ${git-log}
</concat> <!-- keep this outdented, since Ant is so wonderful -->

        <antcall target="build-web"/>
        <antcall target="build-json-idl"/>
        <antcall target="build-client"/>
        <antcall target="build-target"/>
        <antcall target="build-doc"/>

        <tstamp>
            <format property="TSTAMP_FINISHED" pattern="HH:mm:ss"/>
        </tstamp>

        <property name="MESSAGE_FINISHED" value="at ${TSTAMP_FINISHED} for ${ant.file}:build-dev"/>

        <antcall target="finished"/>
        <antcall target="finished-growl"/>
        
        <echo file="${OUT}/build-done.txt" message="${build-info-text} is finished!"/>
        <echo file="${OUT}/version.txt"    message="${BUILD_VERSION}"/>
        
    </target>

    <!-- ============================================================
         check for personal properties
         ============================================================ -->

    <target name="check-personal-properties" unless="personal.properties.exists">
    </target>

    <!-- ============================================================
         basic web resources
         ============================================================ -->

    <target name="build-web">
        <delete dir="${WEB}" />
        <mkdir  dir="${WEB}" />

        <delete dir="${TMP}" />
        <mkdir  dir="${TMP}" />

        <echo message="compiling CoffeeScript modules"/>
        <mkdir  dir="${TMP}/modules/weinre/client" />
        <mkdir  dir="${TMP}/modules/weinre/common" />
        <mkdir  dir="${TMP}/modules/weinre/target" />

        <echo message="compiling CoffeeScript files in: ${PROJECT_WEB}/modules/weinre/client"/>
        <exec executable="node" failonerror="true" failifexecutionfails="true">
            <arg value="../${PROJECT_SERVER}/node_modules/coffee-script/bin/coffee"/>
            <arg value="--compile"/>
            <arg value="--bare"/>
            <arg value="--output"/>
            <arg value="${TMP}/modules/weinre/client"/>
            <arg value="../${PROJECT_WEB}/modules/weinre/client"/>
        </exec>

        <echo message="compiling CoffeeScript files in: ${PROJECT_WEB}/modules/weinre/common"/>
        <exec executable="node" failonerror="true" failifexecutionfails="true">
            <arg value="../${PROJECT_SERVER}/node_modules/coffee-script/bin/coffee"/>
            <arg value="--compile"/>
            <arg value="--bare"/>
            <arg value="--output"/>
            <arg value="${TMP}/modules/weinre/common"/>
            <arg value="../${PROJECT_WEB}/modules/weinre/common"/>
        </exec>

        <echo message="compiling CoffeeScript files in: ${PROJECT_WEB}/modules/weinre/target"/>
        <exec executable="node" failonerror="true" failifexecutionfails="true">
            <arg value="../${PROJECT_SERVER}/node_modules/coffee-script/bin/coffee"/>
            <arg value="--compile"/>
            <arg value="--bare"/>
            <arg value="--output"/>
            <arg value="${TMP}/modules/weinre/target"/>
            <arg value="../${PROJECT_WEB}/modules/weinre/target"/>
        </exec>

        <echo message="transportd-izing modules"/>
        <exec executable="python" failonerror="true" failifexecutionfails="true">
            <arg  file="scripts/module2amd.py"/>
            <arg value="--quiet"/>
            <arg value="--out"/>
            <arg  file="${WEB}"/>
            <arg  file="${TMP}/modules"/>
        </exec>

        <copy todir="${WEB}">
            <fileset file="../${PROJECT_WEB}/modjewel.js"/>
        </copy>

<!--
        <copy todir="${WEB}">
            <fileset file="${VENDOR}/json2/json2.js"/>
        </copy>
-->

        <copy todir="${WEB}">
            <fileset dir="../${PROJECT_WEB}">
                <exclude name="versions.js"/>
                <exclude name="common/**/*"/>
                <exclude name="bin/**/*"/>
                <include name="**/*.js"/>
                <include name="**/*.css"/>
                <include name="**/*.html"/>
                <include name="**/*.png"/>
            </fileset>
        </copy>

        <echo message="building InjectedScript.js"/>
        <echo
            file    = "${WEB}/weinre/target/InjectedScript.js"
            message = "var injectedScriptConstructor = ${line.separator}"
        />
        <concat
            destfile = "${WEB}/weinre/target/InjectedScript.js"
            append   = "true"
        >
            <fileset file="${VENDOR}/webkit/WebCore/inspector/InjectedScriptSource.js"/>
        </concat>

        <echo message="building versions.js"/>
        <copy todir="${WEB}">
            <fileset dir="../${PROJECT_WEB}">
                <include name="versions.js"/>
            </fileset>

            <filterset>
                <filter token="WEINRE_VERSION" value="${BUILD_VERSION}"/>
                <filter token="BUILD_DATE"     value="${BUILD_DATE}"/>
            </filterset>
        </copy>

        <echo message="building package.json"/>
        <copy file="package.json.template"  tofile="../${PROJECT_SERVER}/package.json" overwrite="true">
            <filterset>
                <filter token="WEINRE_VERSION" value="${BUILD_VERSION}"/>
            </filterset>
        </copy>
    </target>

    <!-- ============================================================
         documentation
         ============================================================ -->

    <target name="build-doc">

        <mkdir  dir="${WEB}/doc" />

        <copy todir="${WEB}/doc" file="${OUT}/build-info.txt"/>

        <build-html name="Building"      title="Building"       oDir="${WEB}/doc" iDir="../${PROJECT_DOC}"/>
        <build-html name="Home"          title="Home"           oDir="${WEB}/doc" iDir="../${PROJECT_DOC}"/>
        <build-html name="Installing"    title="Installing"     oDir="${WEB}/doc" iDir="../${PROJECT_DOC}"/>
        <build-html name="License"       title="License"        oDir="${WEB}/doc" iDir="../${PROJECT_DOC}"/>
        <build-html name="Running"       title="Running"        oDir="${WEB}/doc" iDir="../${PROJECT_DOC}"/>
        <build-html name="MultiUser"     title="Muli-User"      oDir="${WEB}/doc" iDir="../${PROJECT_DOC}"/>
        <build-html name="Security"      title="Security"       oDir="${WEB}/doc" iDir="../${PROJECT_DOC}"/>
        <build-html name="UserInterface" title="User Interface" oDir="${WEB}/doc" iDir="../${PROJECT_DOC}"/>
        <build-html name="ChangeLog"     title="ChangeLog"      oDir="${WEB}/doc" iDir="../${PROJECT_DOC}"/>

        <copy file="${WEB}/doc/Home.html" tofile="${WEB}/doc/index.html"/>

        <copy todir="${WEB}/doc/images" file="../${PROJECT_WEB}/images/weinre-icon-64x64.png"/>

        <copy todir="${WEB}/doc/css">     <fileset dir="../${PROJECT_DOC}/css"/>     </copy>
        <copy todir="${WEB}/doc/images">  <fileset dir="../${PROJECT_DOC}/images"/>  </copy>
        <copy todir="${WEB}/doc/scripts"> <fileset dir="../${PROJECT_DOC}/scripts"/> </copy>

        <delete dir="${WEB}/doc/images/orig" />

    </target>

    <!-- ============================================================
         convert IDL to JSON (cached)
         ============================================================ -->

    <target name="build-json-idl">
        <uptodate property="JSON_IDL_UPTODATE" targetfile="${CACHED}/json-idl/all-json-idls.js">
            <srcfiles dir="../${PROJECT_SERVER}/interfaces"    includes="*.idl"/>
            <srcfiles dir="${VENDOR}/webkit/WebCore/inspector" includes="*.idl"/>
        </uptodate>

        <antcall target="build-json-idl-fresh"/>

        <copy todir="${WEB}/interfaces"> <fileset dir="${CACHED}/json-idl"/></copy>
    </target>

    <!-- ============================================================
         convert IDL to JSON (slow part)
         ============================================================ -->

    <target name="build-json-idl-fresh" unless="JSON_IDL_UPTODATE">

        <delete dir="${CACHED}/json-idl"/>
        <mkdir  dir="${CACHED}/json-idl"/>

        <simple-idl2json name="WeinreClientCommands"      oDir="${CACHED}/json-idl" iDir="../${PROJECT_SERVER}/interfaces"/>
        <simple-idl2json name="WeinreClientEvents"        oDir="${CACHED}/json-idl" iDir="../${PROJECT_SERVER}/interfaces"/>
        <simple-idl2json name="WeinreTargetCommands"      oDir="${CACHED}/json-idl" iDir="../${PROJECT_SERVER}/interfaces"/>
        <simple-idl2json name="WeinreTargetEvents"        oDir="${CACHED}/json-idl" iDir="../${PROJECT_SERVER}/interfaces"/>
        <simple-idl2json name="WeinreExtraClientCommands" oDir="${CACHED}/json-idl" iDir="../${PROJECT_SERVER}/interfaces"/>
        <simple-idl2json name="WeinreExtraTargetEvents"   oDir="${CACHED}/json-idl" iDir="../${PROJECT_SERVER}/interfaces"/>

        <simple-idl2json name="InjectedScriptHost"    oDir="${CACHED}/json-idl" iDir="${VENDOR}/webkit/WebCore/inspector"/>

        <simple-idl2json name="Inspector"             oDir="${CACHED}/json-idl" iDir="${VENDOR}/webkit/WebCore/inspector">
            <arg value="--anyType"/>
            <arg value="Value"/>
        </simple-idl2json>

        <simple-idl2json name="InspectorFrontendHost" oDir="${CACHED}/json-idl" iDir="${VENDOR}/webkit/WebCore/inspector">
            <arg value="--anyType"/>
            <arg value="MouseEvent"/>
        </simple-idl2json>

        <exec executable="python" failonerror="true" failifexecutionfails="true">
            <arg file="scripts/collect-all-json-idl.py"/>
            <arg file="${CACHED}/json-idl/all-json-idls.js"/>
            <arg file="${CACHED}/json-idl"/>
        </exec>

        <exec executable="python" failonerror="true" failifexecutionfails="true">
            <arg file="scripts/collect-all-json-idl.py"/>
            <arg value="-min"/>
            <arg file="${CACHED}/json-idl/all-json-idls-min.js"/>
            <arg file="${CACHED}/json-idl"/>
        </exec>

    </target>

    <!-- ============================================================
         build the web/target files
         ============================================================ -->

    <target name="build-target">

        <mkdir dir="${WEB}/target"/>

        <exec executable="python" failonerror="true" failifexecutionfails="true">
            <arg file="scripts/build-target-scripts.py"/>
            <arg file="${WEB}"/>
            <arg file="${WEB}/target"/>
        </exec>

    </target>

    <!-- ============================================================
         build the web/client files
         ============================================================ -->

    <target name="build-client">

        <copy todir="${WEB}/client/nls/English.lproj">
            <fileset file="${VENDOR}/webkit/WebCore/English.lproj/localizedStrings.js"/>
        </copy>

        <copy todir="${WEB}/client">
            <fileset dir="${VENDOR}/webkit/WebCore/inspector/front-end"/>
        </copy>

        <exec executable="python" failonerror="true" failifexecutionfails="true">
            <arg file="scripts/build-client-html.py"/>
            <arg file="${WEB}"/>
        </exec>

    </target>

    <!-- ============================================================
         build the archives
         ============================================================ -->
    <target name="build-archives" depends="build-clean">

        <!-- =================================== -->
        <delete dir="${OUT}/archives"/>
        <mkdir  dir="${OUT}/archives"/>

        <delete dir="${OUT}/files"/>

        <delete dir="${OUT}/files/${ARCH-BIN}"/>
        <mkdir  dir="${OUT}/files/${ARCH-BIN}"/>
        <copy todir="${OUT}/files/${ARCH-BIN}" file="${OUT}/build-info.txt"/>
        <copy todir="${OUT}/files/${ARCH-BIN}" file="../LICENSE"/>
        <copy todir="${OUT}/files/${ARCH-BIN}" file="../NOTICE"/>
        <copy todir="${OUT}/files/${ARCH-BIN}">
            <fileset dir="../${PROJECT_SERVER}">
                <exclude name="weinre-hot"/>
            </fileset>
        </copy>
        <chmod file="${OUT}/files/${ARCH-BIN}/weinre" perm="+x"/>

        <!-- ant's zip task doesn't preserve permission bits -->
        <exec executable="zip" dir="${OUT}/files">
            <arg value="-q"/>
            <arg value="-r"/>
            <arg value="../archives/${ARCH-BIN}.zip"/>
            <arg value="${ARCH-BIN}"/>
        </exec>

        <exec executable="tar" dir="${OUT}/files">
            <arg value="-czf"/>
            <arg value="../archives/${ARCH-BIN}.tar.gz"/>
            <arg value="${ARCH-BIN}"/>
        </exec>

        <!-- =================================== -->
        <delete dir="${OUT}/files/${ARCH-DOC}"/>
        <mkdir  dir="${OUT}/files/${ARCH-DOC}"/>
        <copy todir="${OUT}/files/${ARCH-DOC}" file="${OUT}/build-info.txt" />
        <copy todir="${OUT}/files/${ARCH-DOC}" file="../LICENSE"/>
        <copy todir="${OUT}/files/${ARCH-DOC}" file="../NOTICE"/>
        <copy todir="${OUT}/files/${ARCH-DOC}">
            <fileset dir="${WEB}/doc"/>
        </copy>

        <copy todir="${OUT}/archives/doc">
            <fileset dir="${OUT}/files/${ARCH-DOC}"/>
        </copy>

        <!-- ant's zip task doesn't preserve permission bits -->
        <exec executable="zip" dir="${OUT}/files">
            <arg value="-q"/>
            <arg value="-r"/>
            <arg value="../archives/${ARCH-DOC}.zip"/>
            <arg value="${ARCH-DOC}"/>
        </exec>

        <exec executable="tar" dir="${OUT}/files">
            <arg value="-czf"/>
            <arg value="../archives/${ARCH-DOC}.tar.gz"/>
            <arg value="${ARCH-DOC}"/>
        </exec>

        <!-- =================================== -->
        <delete dir="${OUT}/files/${ARCH-SRC}"/>
        <mkdir  dir="${OUT}/files/${ARCH-SRC}"/>
        <copy todir="${OUT}/files/${ARCH-SRC}" file="${OUT}/build-info.txt" />
        
        <copy todir="${OUT}/files/${ARCH-SRC}" preservelastmodified="yes">
            <fileset dir="..">
                <exclude name="weinre.build/bin/**"/>
                <exclude name="weinre.build/cached/**"/>
                <exclude name="weinre.build/out/**"/>
                <exclude name="weinre.build/tmp/**"/>
                <exclude name="weinre.build/personal.properties"/>

                <exclude name="weinre.server/tmp/**"/>
                <exclude name="weinre.server/web/**"/>
            </fileset>
        </copy>

        <exec executable="zip" dir="${OUT}/files">
            <arg value="-q"/>
            <arg value="-r"/>
            <arg value="../archives/${ARCH-SRC}.zip"/>
            <arg value="${ARCH-SRC}"/>
        </exec>

        <exec executable="tar" dir="${OUT}/files">
            <arg value="-czf"/>
            <arg value="../archives/${ARCH-SRC}.tar.gz"/>
            <arg value="${ARCH-SRC}"/>
        </exec>

    </target>


    <!-- ============================================================
         build-archives-checksums
         ============================================================ -->

    <target name="build-archives-ck" depends="build-archives">
        
        <checksum file="${OUT}/archives/${ARCH-BIN}.zip"    algorithm="MD5"/>
        <checksum file="${OUT}/archives/${ARCH-DOC}.zip"    algorithm="MD5"/>
        <checksum file="${OUT}/archives/${ARCH-SRC}.zip"    algorithm="MD5"/>

        <checksum file="${OUT}/archives/${ARCH-BIN}.tar.gz" algorithm="MD5"/>
        <checksum file="${OUT}/archives/${ARCH-DOC}.tar.gz" algorithm="MD5"/>
        <checksum file="${OUT}/archives/${ARCH-SRC}.tar.gz" algorithm="MD5"/>

        <checksum file="${OUT}/archives/${ARCH-BIN}.zip"    algorithm="SHA1"/>
        <checksum file="${OUT}/archives/${ARCH-DOC}.zip"    algorithm="SHA1"/>
        <checksum file="${OUT}/archives/${ARCH-SRC}.zip"    algorithm="SHA1"/>

        <checksum file="${OUT}/archives/${ARCH-BIN}.tar.gz" algorithm="SHA1"/>
        <checksum file="${OUT}/archives/${ARCH-DOC}.tar.gz" algorithm="SHA1"/>
        <checksum file="${OUT}/archives/${ARCH-SRC}.tar.gz" algorithm="SHA1"/>

        <!-- =================================== -->
        <!--
        <delete dir="${OUT}/files"/>
        -->

    </target>


    <!-- ============================================================
         done!
         ============================================================ -->

    <target name="finished">
        <echo>ant completed successfully ${MESSAGE_FINISHED}</echo>
    </target>

    <!-- ============================================================
         done! via growl
         ============================================================ -->

    <target name="finished-growl" if="USE_GROWL">
        <exec os="Mac OS X" executable="growlnotify">
            <arg value="-m"/>
            <arg value="${MESSAGE_FINISHED}"/>
            <arg value="ant completed successfully"/>
        </exec>
    </target>

    <!-- ============================================================
         macro to compile IDL to JSON
         ============================================================ -->

    <macrodef name="simple-idl2json">
       <attribute name="name"/>
       <attribute name="iDir"/>
       <attribute name="oDir"/>
       <element name="args" optional="true" implicit="true"/>
       <sequential>
           <exec executable="python" failonerror="true" failifexecutionfails="true">
               <arg file="scripts/simple-idl2json.py"/>
               <args/>
               <arg value="--validate"/>
               <arg file="@{iDir}/@{name}.idl"/>
               <arg file="@{oDir}/@{name}.json"/>
           </exec>
       </sequential>
    </macrodef>

    <!-- ============================================================
         macro to compile HTML
         ============================================================ -->

    <macrodef name="build-html">
       <attribute name="name"/>
       <attribute name="title"/>
       <attribute name="iDir"/>
       <attribute name="oDir"/>
       <element name="args" optional="true" implicit="true"/>
       <sequential>
           <delete file="@{oDir}/@{name}.html"/>
           <concat destfile="@{oDir}/@{name}.html">
               <filelist dir="@{iDir}" files="boilerplate-header.html.txt"/>
               <filelist dir="@{iDir}" files="@{name}.body.html"/>
               <filelist dir="@{iDir}" files="boilerplate-trailer.html.txt"/>
               <filterchain>
                  <replacetokens>
                    <token key="PAGE_NAME" value="@{title}"/>
                  </replacetokens>
                </filterchain>
           </concat>
           <echo>generated @{oDir}/@{name}.html</echo>
       </sequential>
    </macrodef>

    <!-- ============================================================ -->
</project>
