<!--
 * weinre is available under *either* the terms of the modified BSD license *or* the
 * MIT License (2008). See http://opensource.org/licenses/alphabetical for full text.
 *
 * Copyright (c) 2010, 2011 IBM Corporation
-->

<project name="get-vendor" default="get-vendor" basedir=".">

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

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

    <target name="get-vendor">
        <echo>Go get some coffee, this is going to take a while</echo>

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

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

        <antcall target="get-json2"/>
        <antcall target="get-cli"/>
        <antcall target="get-json4j"/>
        <antcall target="get-jetty"/>
        <antcall target="get-coffeescript"/>
        <antcall target="get-modjewel"/>
        <antcall target="get-web-inspector"/>
        <antcall target="get-swt-mac"/>
    </target>

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

    <target name="get-cli">
        <delete dir="${VENDOR}/cli"/>
        <mkdir  dir="${VENDOR}/cli"/>

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

        <get src="${CLI_URL}" dest="${TMP}/commons-cli.zip" verbose="false"/>
        <unzip src="${TMP}/commons-cli.zip" dest="${TMP}">
            <patternset>
                <include name="${CLI_BASENAME}-sources.jar"/>
                <include name="${CLI_BASENAME}.jar"/>
            </patternset>
        </unzip>


        <copy file="${TMP}/${CLI_BASENAME}.jar"         tofile="${VENDOR}/cli/commons-cli.jar"/>
        <copy file="${TMP}/${CLI_BASENAME}-sources.jar" tofile="${VENDOR}/cli/commons-cli-src.jar"/>

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

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

    <target name="get-json4j">
        <delete dir="${VENDOR}/json4j"/>
        <mkdir  dir="${VENDOR}/json4j"/>

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

        <get src="${JSON4J_BIN_URL}" dest="${TMP}/json4j.zip" verbose="false"/>
        <unzip src="${TMP}/json4j.zip" dest="${TMP}">
            <patternset>
                <include name="**/wink-json4j-${JSON4J_VERSION}.jar"/>
            </patternset>
        </unzip>

        <copy file="${TMP}/apache-wink-${JSON4J_VERSION}/ext/wink-json4j-provider/lib/wink-json4j-${JSON4J_VERSION}.jar" tofile="${VENDOR}/json4j/json4j.jar"/>

        <delete dir="${TMP}"/>
        <mkdir  dir="${TMP}"/>
        <get src="${JSON4J_SRC_URL}" dest="${TMP}/json4j-src.zip" verbose="false"/>
        <unzip src="${TMP}/json4j-src.zip" dest="${TMP}/src">
            <patternset>
                <include name="**/wink-json4j/src/main/java/org/apache/wink/json4j/**/*"/>
            </patternset>
        </unzip>

        <zip destfile="${VENDOR}/json4j/json4j-src.jar" basedir="${TMP}/src"/>

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

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

    <target name="get-jetty">
        <delete dir="${VENDOR}/jetty"/>
        <mkdir  dir="${VENDOR}/jetty"/>

        <get src="${JETTY_SRC_URL}"     dest="${VENDOR}/jetty/jetty-src.jar"   verbose="false"/>
        <get src="${JETTY_BIN_URL}"     dest="${VENDOR}/jetty/jetty.jar"       verbose="false"/>
        <get src="${JAVAX_SERVLET_URL}" dest="${VENDOR}/jetty/servlet-api.jar" verbose="false"/>
    </target>

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

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

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

    <target name="get-modjewel">
        <delete dir="${VENDOR}/modjewel"/>
        <mkdir  dir="${VENDOR}/modjewel"/>

        <get src="${MODJEWEL_URL_PREFIX}/modjewel-require.js"  dest="${VENDOR}/modjewel/modjewel-require.js"  verbose="false"/>
        <get src="${MODJEWEL_URL_PREFIX}/module2transportd.py" dest="${VENDOR}/modjewel/module2transportd.py" verbose="false"/>
    </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>

        <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/css/CSSPropertyNames.in"/>
        </exec>

        <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>

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

    <target name="get-swt-mac">
        <delete dir="${VENDOR}/swt"/>
        <mkdir  dir="${VENDOR}/swt"/>

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

        <get src="${SWT_URL_PREFIX}/swt-${SWT_VERSION_MAJOR}-cocoa-macosx-x86_64.zip" dest="${TMP}/swt.zip" verbose="false"/>
        <unzip src="${TMP}/swt.zip" dest="${TMP}"/>

        <copy file="${TMP}/src.zip"       tofile="${VENDOR}/swt/cocoa-macosx-x86_64/swt-src.jar"/>
        <copy file="${TMP}/swt-debug.jar" tofile="${VENDOR}/swt/cocoa-macosx-x86_64/swt.jar"/>

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

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

    <target name="get-json2">
        <delete dir="${VENDOR}/json2"/>
        <mkdir  dir="${VENDOR}/json2"/>

        <get src="${JSON2_URL_PREFIX}/json2.js"  dest="${VENDOR}/json2/json2.js"  verbose="false"/>
    </target>

</project>
