<!--
 * 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-web-inspector"/>

        <copy todir="${VENDOR}" overwrite="true">
            <fileset dir="${VENDOR-OVERRIDE}/"/>
        </copy>
    </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>
