<?xml version="1.0"?>

<!--
   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.
-->
<!--
  =======================================================================
   Build file to fetch maven2 tasks; extracted from (Ant's) fetch.xml
  =======================================================================
-->
<project name="get-m2" default="get-m2" basedir=".">

<description>
  This build file downloads the Maven2 Ant tasks,
  and installs them in the location specified by the m2.dest.dir property.

  You may need to set proxy settings. On Java1.5, Ant tries to get
  this from the OS, unless you use the -noproxy option.

  Proxies can be configured manually setting the JVM proxy values in the
  ANT_OPTS environment variable.

  For example, to set the proxy up in the tcsh shell, the command would be
  something like:

  For csh/tcsh:
    setenv ANT_OPTS "-Dhttp.proxyHost=proxy -Dhttp.proxyPort=8080"
  For bash:
    export ANT_OPTS="-Dhttp.proxyHost=proxy -Dhttp.proxyPort=8080"
  For Windows, set the environment variable in the appropriate dialog box
  and open a new console. or, by hand
    set ANT_OPTS = -Dhttp.proxyHost=proxy -Dhttp.proxyPort=8080
</description>

  <property file="get-m2.properties" />

  <property name="m2.antlib.resource"
            value="org/apache/maven/artifact/ant/antlib.xml" />

  <property name="m2.antlib.uri"
            value="antlib:org.apache.maven.artifact.ant" />

  <macrodef name="require">
    <attribute name="property" />
    <sequential>
      <fail unless="@{property}">$${@{property}} not specified</fail>
    </sequential>
  </macrodef>

  <target name="probe-m2">
    <require property="m2.dest.dir" />
    <require property="m2.jar.name" />

    <!-- Look for M2 ant tasks in our classpath-->
    <property name="m2.artifact" location="${m2.dest.dir}/${m2.jar.name}" />
    <available property="m2.antlib.found" resource="${m2.antlib.resource}" />
    <condition property="m2.antlib.typefound">
      <typefound name="${m2.antlib.uri}:artifact" />
    </condition>
    <available property="m2.artifact.found" file="${m2.artifact}" type="file" />
  </target>

  <target name="download-m2" depends="probe-m2" unless="m2.artifact.found">
    <require property="m2.antlib.url" />
    <echo>Downloading to ${m2.dest.dir}</echo>

    <mkdir dir="${m2.dest.dir}" />
    <!-- fetch M2 ant tasks into our repository, if it is not there-->
    <get src="${m2.antlib.url}"
      dest="${m2.artifact}"
      verbose="true"
      usetimestamp="false" />
  </target>

  <target name="dont-validate-m2-checksum" depends="probe-m2"
          if="m2.artifact.found">
    <property name="checksum.equal" value="true" />
  </target>

  <target name="validate-m2-checksum"
          depends="download-m2,dont-validate-m2-checksum"
          if="m2.sha1.checksum" unless="m2.artifact.found">
    <checksum file="${m2.artifact}"
        algorithm="SHA"
        property="${m2.sha1.checksum}"
        verifyProperty="checksum.equal" />
  </target>

  <target name="checksum-mismatch" depends="validate-m2-checksum"
          if="m2.sha1.checksum" unless="checksum.equal">
    <delete file="${m2.artifact}" />
    <fail>
      Failed to verify the downloaded file ${m2.antlib.url}" against the checksum
      coded into libraries.properties.
      The local copy has been deleted, for security reasons
    </fail>
  </target>

  <target name="checksum-match" depends="checksum-mismatch"
          unless="m2.antlib.found">
    <taskdef classpath="${m2.artifact}" resource="${m2.antlib.resource}"
             uri="${m2.antlib.uri}" />
  </target>

  <target name="get-m2" depends="checksum-match"
      description="Download the Maven2 Ant tasks" />

</project>
