<!--
 * 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="update-vendor" default="update-vendor" basedir=".">

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

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

    <target name="update-vendor">
        <delete dir="${TMP}"/>

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

        <antcall target="get-coffeescript"/>
        <antcall target="get-web-inspector"/>
    </target>

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

    <target name="get-coffeescript">
        <echo message="coffee-script@${COFFEESCRIPT_VERSION}"/>
        <exec executable="npm" dir="${VENDOR}">
            <arg value="install"/>
            <arg value="coffee-script@${COFFEESCRIPT_VERSION}"/>
        </exec>
    </target>

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

    <target name="get-web-inspector">
        <delete dir="${VENDOR}/webkit"/>
        <mkdir  dir="${VENDOR}/webkit/WebCore"/>

        <exec executable="svn" dir="${VENDOR}/webkit/WebCore">
            <arg value="--non-interactive"/>
            <arg value="--trust-server-cert"/>
            <arg value="export"/>
            <arg value="-r"/>
            <arg value="${WEBKIT_VERSION}"/>
            <arg value="${WEBKIT_URL_PREFIX}/Source/WebCore/inspector"/>
        </exec>

        <exec executable="svn" dir="${VENDOR}/webkit/WebCore">
            <arg value="--non-interactive"/>
            <arg value="--trust-server-cert"/>
            <arg value="export"/>
            <arg value="-r"/>
            <arg value="${WEBKIT_VERSION}"/>
            <arg value="${WEBKIT_URL_PREFIX}/Source/WebCore/English.lproj"/>
        </exec>

        <delete>
            <fileset dir="${VENDOR}/webkit/WebCore/inspector">
                <include name="**/*.cpp"/>
                <include name="**/*.h"/>
                <include name="**/*.pm"/>
                <include name="**/*.pl"/>
            </fileset>
        </delete>

        <exec executable="grep" outputproperty="gpl-grep-results" dir="${VENDOR}/webkit/WebCore">
            <arg value="-r"/>
            <arg value="GPL"/>
            <arg value="."/>
        </exec>

        <condition property="found-no-gpl-files">
            <equals arg1="" arg2="${gpl-grep-results}"/>
        </condition>

        <fail unless="found-no-gpl-files" message="The string GPL was found in the WebKit files"/>

    </target>

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

</project>
