<!--
 * 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-scooj"/>
        <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-scooj">
        <delete dir="${VENDOR}/scooj"/>
        <mkdir  dir="${VENDOR}/scooj"/>

        <get src="${SCOOJ_URL_PREFIX}/scooj.js"  dest="${VENDOR}/scooj/scooj.js"  verbose="false"/>
        <get src="${SCOOJ_URL_PREFIX}/scoopc.py" dest="${VENDOR}/scooj/scoopc.py" 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>
