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

       https://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 optional libraries for Apache Ant
  =======================================================================
-->
<project name="fetch" default="all" basedir=".">

  <description>
This build file downloads JAR files that optional Ant tasks use,
and installs them in a location that is accessible the next time Ant runs.

You can choose three locations, by going -Ddest=LOCATION on the command line
-Ddest=user     user lib dir  ${user.home}/.ant/lib
-Ddest=system   ant lib dir   ${ant.home}/lib
-Ddest=optional optional dir  $${basedir}/lib/optional  (for Ant developers)

You may also need to set proxy settings. On Java 1.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>

  <!-- Give user a chance to override without editing this file
       (and without typing -D each time it compiles it) -->
  <property file="${user.home}/.ant/ant.properties"/>
  <property name="lib.dir" location="lib"/>
  <property name="optional.dir" location="${lib.dir}/optional"/>
  <property name="userlib.dir" location="${user.home}/.ant/lib"/>

  <!-- Load in our properties table -->
  <property file="${lib.dir}/libraries.properties"/>

  <!-- Temporary cache for working files -->
  <property name="temp.dir" location="${user.home}/.ant/tempcache"/>
  <property name="keep.temp.dir" value="true"/>

  <import file="get-m2.xml"/>

  <target name="pick-dest">
    <fail>
      <condition>
        <not>
          <isset property="dest"/>
        </not>
      </condition>ERROR
Set -Ddest=LOCATION on the command line
  -Ddest=user     user lib dir  ${user.home}/.ant/lib
  -Ddest=system   ant lib dir   ${ant.home}/lib
  -Ddest=optional optional dir  $${basedir}/lib/optional  (for Ant developers)
    </fail>

    <condition property="dest.dir"
               value="${lib.dir}">
      <equals arg1="${dest}" arg2="system"/>
    </condition>
    <condition property="dest.dir"
               value="${optional.dir}">
      <equals arg1="${dest}" arg2="optional"/>
    </condition>
    <condition property="dest.dir"
               value="${userlib.dir}">
      <equals arg1="${dest}" arg2="user"/>
    </condition>
    <fail unless="dest.dir">Unknown destination : ${dest}</fail>
    <echo>Downloading to ${dest.dir}</echo>
    <property name="m2.dest.dir" value="${dest.dir}"/>
  </target>


  <target name="macros" depends="pick-dest,get-m2"
          xmlns:artifact="antlib:org.apache.maven.artifact.ant">
    <fail>
      Cannot execute multiple targets due to the bug in Maven Ant tasks
      <condition>
        <contains string="${ant.project.invoked-targets}" substring=","/>
      </condition>
    </fail>
    <macrodef name="f2">
      <attribute name="project"/>
      <attribute name="archive" default="@{project}"/>
      <attribute name="repository" default="${m2.repo}"/>
      <attribute name="id" default="central"/>
      <sequential>
        <fail>
          Unknown archive @{archive} -no property @{archive}.version defined in ${lib.dir}/libraries.properties.
          <condition>
            <not>
              <isset property="@{archive}.version"/>
            </not>
          </condition>
        </fail>
        <artifact:dependencies pathID="@{archive}.path" useScope="runtime">
          <dependency groupId="@{project}"
                      artifactId="@{archive}"
                      version="${@{archive}.version}">
            <!-- exclude dependencies of ant-antunit (they should be in optional scope) -->
            <exclusion groupId="org.apache.ant" artifactId="ant"/>
            <exclusion groupId="org.apache.ant" artifactId="ant-launcher"/>
          </dependency>
          <artifact:remoteRepository url="@{repository}" id="@{id}"/>
        </artifact:dependencies>
        <!-- now we are left with the problem of getting the files into our directory -->
        <copy todir="${dest.dir}">
          <path refid="@{archive}.path"/>
          <flattenmapper/>
        </copy>
      </sequential>
    </macrodef>
  </target>

  <target name="nonm2-macros" depends="pick-dest">
    <macrodef name="get-ftp-file">
      <attribute name="host"/>
      <attribute name="port" default="21"/>
      <attribute name="remotedir"/>
      <attribute name="filename"/>
      <attribute name="localdir" default="${dest.dir}"/>
      <attribute name="user" default="anonymous"/>
      <attribute name="pw" default="anonymous"/>
      <sequential>
        <ftp server="@{host}" port="@{port}" userid="@{user}" password="@{pw}" passive="true"
             remotedir="@{remotedir}" action="get" depends="true" preserveLastModified="true"
             skipFailedTransfers="true">
          <fileset dir="@{localdir}">
            <include name="@{filename}"/>
          </fileset>
        </ftp>
      </sequential>
    </macrodef>
  </target>


  <!-- any init stuff -->
  <target name="init" depends="macros"/>

  <target name="init-no-m2" depends="nonm2-macros"/>

  <target name="init-cache">
    <available property="temp.cache.already.exists" file="${temp.dir}" type="dir"/>
    <condition property="user.wants.temp.cache">
      <and>
        <isset property="keep.temp.dir"/>
        <not>
          <or>
            <equals arg1="${keep.temp.dir}" arg2="false" casesensitive="false"/>
            <equals arg1="${keep.temp.dir}" arg2="no" casesensitive="false"/>
            <equals arg1="${keep.temp.dir}" arg2="off" casesensitive="false"/>
          </or>
        </not>
      </and>
    </condition>
    <condition property="delete.temp.cache">
      <and>
        <not>
          <isset property="temp.cache.already.exists"/>
        </not>
        <not>
          <isset property="user.wants.temp.cache"/>
        </not>
      </and>
    </condition>
  </target>

  <target name="-setup-temp-cache" depends="init-cache" unless="temp.cache.already.exists"
          description="Set up temporary cache for downloaded files">
    <mkdir dir="${temp.dir}"/>
  </target>

  <target name="-cleanup-temp-cache" depends="init-cache" if="delete.temp.cache"
          description="Get rid of the temporary cache directory">
    <delete dir="${temp.dir}"/>
  </target>


  <target name="diag" depends="init">
    <echoproperties/>
  </target>

  <target name="antunit"
          description="load AntUnit library"
          depends="init">
    <f2 project="org.apache.ant" archive="ant-antunit"/>
  </target>

  <target name="ivy"
          description="load Ivy dependency manager"
          depends="init">
    <f2 project="org.apache.ivy" archive="ivy"/>
  </target>

  <target name="logging"
          description="load logging libraries (Commons and Log4j)"
          depends="init">
    <f2 project="log4j"/>
    <f2 project="commons-logging" archive="commons-logging-api"/>
  </target>

  <target name="junit"
          description="load JUnit libraries"
          depends="init">
    <f2 project="junit"/>
    <f2 project="org.hamcrest" archive="hamcrest-library"/>
  </target>

  <target name="junitlauncher"
    description="load junitlauncher libraries"
    depends="init">
    <f2 project="org.junit.platform" archive="junit-platform-launcher" />
  </target>

  <target name="junit-engine-jupiter"
          description="load junit jupiter engine libraries (necessary only for internal Ant project tests)"
          depends="init">
    <f2 project="org.junit.jupiter" archive="junit-jupiter-engine" />
  </target>

  <target name="junit-engine-vintage"
          description="load junit vintage engine libraries (necessary only for internal Ant project tests)"
          depends="init">
    <f2 project="org.junit.vintage" archive="junit-vintage-engine" />
  </target>

  <target name="xml"
          description="load full XML libraries (Xalan and xml-resolver)"
          depends="init">
    <f2 project="xalan"/>
    <f2 project="xml-resolver"/>
  </target>

  <target name="networking"
          description="load networking libraries (commons-net and JSch)"
          depends="init">
    <f2 project="commons-net"/>
    <f2 project="com.jcraft" archive="jsch"/>
  </target>

  <target name="regexp"
          description="load regexp libraries"
          depends="init">
    <f2 project="jakarta-regexp"/>
    <f2 project="oro"/>
  </target>

  <target name="antlr"
          description="load ANother Tool for Language Recognition (ANTLR)"
          depends="init">
    <f2 project="antlr"/>
  </target>

  <target name="bcel"
          description="load Byte Code Engineering Library (BCEL)"
          depends="init">
    <f2 project="org.apache.bcel" archive="bcel"/>
  </target>

  <target name="jdepend"
          description="load JDepend libraries"
          depends="init">
    <f2 project="jdepend"/>
  </target>

  <target name="bsf"
          description="load Bean Scripting Framework"
          depends="init">
    <f2 project="bsf"/>
  </target>

  <target name="jruby"
          description="load JRuby"
          depends="bsf">
    <f2 project="org.jruby" archive="jruby"/>
  </target>

  <target name="beanshell"
          description="load BeanShell support"
          depends="bsf">
    <f2 project="org.beanshell" archive="bsh"/>
  </target>

  <target name="jython"
          description="load Jython"
          depends="bsf">
    <f2 project="org.python" archive="jython"/>
  </target>

  <target name="rhino"
          description="load Rhino"
          depends="bsf">
    <f2 project="org.mozilla" archive="rhino"/>
  </target>

  <target name="script"
          description="load script languages (except Jython)"
          depends="bsf,jruby,beanshell,rhino"/>

  <target name="debugging"
    description="internal Ant debugging"
    depends="init">
    <f2 project="which"/>
  </target>

  <target name="jakartamail"
          description="load Jakarta Mail"
          depends="init">
    <!-- We only need this one dependency as per
      the project doc https://eclipse-ee4j.github.io/mail/
      This alone should bring in all necessary dependencies (including the API
       jars and the activation jars -->
    <f2 project="com.sun.mail" archive="jakarta.mail"/>
  </target>

  <target name="jspc"
          description="load Jasper"
          depends="init">
    <f2 project="tomcat" archive="jasper-compiler"/>
    <f2 project="tomcat" archive="jasper-runtime"/>
    <f2 project="javax.servlet" archive="servlet-api"/>
  </target>

  <target name="jai"
          description="load Java Advanced Imaging"
          depends="init">
    <f2 project="javax.media" archive="jai-core" id="jboss"
        repository="https://repository.jboss.org/nexus/content/groups/public/"/>
    <f2 project="com.sun.media" archive="jai-codec" id="jboss"
        repository="https://repository.jboss.org/nexus/content/groups/public/"/>
  </target>

  <target name="netrexx"
          description="load NetRexx compiler"
          depends="init-no-m2,-setup-temp-cache,-fetch-netrexx,-fetch-netrexx-no-commons-net">
    <checksum file="${temp.dir}/NetRexx.zip" algorithm="SHA-256" property="${netrexx.sha256}" verifyProperty="netrexx.hash.matches"/>
    <fail message="NetRexx.zip fetched via ftp has an unexpected SHA-256 checksum, the file may have been tampered with">
       <condition>
         <not>
           <istrue value="${netrexx.hash.matches}"/>
         </not>
      </condition>
    </fail>
    <copy todir="${dest.dir}" flatten="true">
      <zipfileset src="${temp.dir}/NetRexx.zip">
        <include name="NetRexx\lib\NetRexxC.jar"/>
        <include name="NetRexx\browse\license.txt"/>
      </zipfileset>
    </copy>
    <antcall target="-cleanup-temp-cache"/>
  </target>

  <available property="have.commons.net" classname="org.apache.commons.net.ftp.FTPClientConfig"/>

  <target name="-fetch-netrexx" if="have.commons.net">
    <get-ftp-file host="ftp.software.ibm.com" remotedir="/software/awdtools/netrexx"
            filename="NetRexx.zip" localdir="${temp.dir}"/>
  </target>

  <target name="-fetch-netrexx-no-commons-net" unless="have.commons.net">
    <get src="ftp://ftp.software.ibm.com/software/awdtools/netrexx/NetRexx.zip"
         dest="${temp.dir}/NetRexx.zip" skipexisting="true"/>
  </target>

  <target name="xz"
          description="load XZ for Java"
          depends="init">
    <f2 project="org.tukaani" archive="xz"/>
  </target>

  <target name="all"
    description="load all the libraries (except jython)"
    depends="antunit,ivy,logging,junit,junitlauncher,xml,networking,regexp,antlr,bcel,jdepend,bsf,debugging,script,
      jakartamail,jspc,jai,xz,netrexx,junit-engine-vintage,junit-engine-jupiter"/>
</project>
