<?xml version="1.0" encoding="UTF-8"?>
<!--
 * 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="Engine-Installer">

    <property name="bsf.version" value="3.0-SNAPSHOT"/>
    <property name="download.dir" value="/target/engines-download/"/>
    <property name="download.file" value="${basedir}${download.dir}engines.zip"/>
    <property name="merged.engines.dir" value="${basedir}/target/merged-engines"/>

    <target name="check-merged">
        <condition property="already.merged" >
           <and>
              <available file="${basedir}/target/bsf-engines-${bsf.version}.jar"/>
           </and>
        </condition>

    </target>

    <!-- Install the bsf.engines jar into the local maven repo -->
    <target name="install-engines" depends="merge-engines">

        <exec executable="mvn${maven.suffix}" dir="${basedir}" failonerror="true">
            <arg line="install:install-file -DgroupId=org.apache.bsf -DartifactId=bsf-engines -Dversion=${bsf.version} -Dpackaging=jar -DgeneratePom=true -Dfile=${basedir}/target/bsf-engines-${bsf.version}.jar"/>
        </exec>

    </target>

    <target name="merge-engines" depends="check-merged, download-engines" unless="already.merged">

        <mkdir dir="${basedir}${download.dir}"/>
        <unzip src="${download.file}" dest="${basedir}${download.dir}engines" overwrite="true"/>

        <!-- now unzip all the engine jars into a single directory -->

        <mkdir dir="${merged.engines.dir}"/>
        <unzip src="${basedir}${download.dir}engines/beanshell/build/bsh-engine.jar" dest="${merged.engines.dir}" overwrite="true"/>
        <!-- unzip src="${basedir}${download.dir}engines/browserjs/build/browserjs-engine.jar" dest="${merged.engines.dir}" overwrite="true"/ -->
        <!-- unzip src="${basedir}${download.dir}engines/ejs/build/js-engine.jar" dest="${merged.engines.dir}" overwrite="true"/ -->
        <unzip src="${basedir}${download.dir}engines/freemarker/build/freemarker-engine.jar" dest="${merged.engines.dir}" overwrite="true"/>
        <unzip src="${basedir}${download.dir}engines/groovy/build/groovy-engine.jar" dest="${merged.engines.dir}" overwrite="true"/>
        <unzip src="${basedir}${download.dir}engines/jacl/build/jacl-engine.jar" dest="${merged.engines.dir}" overwrite="true"/>
        <unzip src="${basedir}${download.dir}engines/jaskell/build/jaskell-engine.jar" dest="${merged.engines.dir}" overwrite="true"/>
        <unzip src="${basedir}${download.dir}engines/java/build/java-engine.jar" dest="${merged.engines.dir}" overwrite="true"/>
        <unzip src="${basedir}${download.dir}engines/javascript/build/js-engine.jar" dest="${merged.engines.dir}" overwrite="true"/>
        <unzip src="${basedir}${download.dir}engines/jawk/build/jawk-engine.jar" dest="${merged.engines.dir}" overwrite="true"/>
        <unzip src="${basedir}${download.dir}engines/jelly/build/jelly-engine.jar" dest="${merged.engines.dir}" overwrite="true"/>
        <unzip src="${basedir}${download.dir}engines/jep/build/jep-engine.jar" dest="${merged.engines.dir}" overwrite="true"/>
        <unzip src="${basedir}${download.dir}engines/jexl/build/jexl-engine.jar" dest="${merged.engines.dir}" overwrite="true"/>
        <unzip src="${basedir}${download.dir}engines/jruby/build/jruby-engine.jar" dest="${merged.engines.dir}" overwrite="true"/>
        <!-- unzip src="${basedir}${download.dir}engines/jst/build/jst-engine.jar" dest="${merged.engines.dir}" overwrite="true"/ -->
        <unzip src="${basedir}${download.dir}engines/judo/build/judo-engine.jar" dest="${merged.engines.dir}" overwrite="true"/>
        <unzip src="${basedir}${download.dir}engines/juel/build/juel-engine.jar" dest="${merged.engines.dir}" overwrite="true"/>
        <unzip src="${basedir}${download.dir}engines/jython/build/jython-engine.jar" dest="${merged.engines.dir}" overwrite="true"/>
        <unzip src="${basedir}${download.dir}engines/ognl/build/ognl-engine.jar" dest="${merged.engines.dir}" overwrite="true"/>
        <unzip src="${basedir}${download.dir}engines/pnuts/build/pnuts-jsr223.jar" dest="${merged.engines.dir}" overwrite="true"/>
        <unzip src="${basedir}${download.dir}engines/scheme/build/scheme-engine.jar" dest="${merged.engines.dir}" overwrite="true"/>
        <unzip src="${basedir}${download.dir}engines/velocity/build/velocity-engine.jar" dest="${merged.engines.dir}" overwrite="true"/>
        <unzip src="${basedir}${download.dir}engines/xpath/build/xpath-engine.jar" dest="${merged.engines.dir}" overwrite="true"/>
        <unzip src="${basedir}${download.dir}engines/xslt/build/xslt-engine.jar" dest="${merged.engines.dir}" overwrite="true"/>

        <!-- Copy in the META-INF files for services, LICENSE and NOTICE -->

        <copy todir="${merged.engines.dir}" overwrite="true">
           <fileset dir="${basedir}/src/main/resources"/>
        </copy>

        <!-- Now zip all that up into a single jar -->

        <zip destfile="${basedir}/target/bsf-engines.tmp.jar" basedir="${merged.engines.dir}" />

        <!-- Use Retroweaver to convert all the classes to JDK 1.4 -->

        <retroweaver inputjar="${basedir}/target/bsf-engines.tmp.jar" outputjar="${basedir}/target/bsf-engines-${bsf.version}.jar"/>

    </target>

    <taskdef name="retroweaver" classname="com.rc.retroweaver.ant.RetroWeaverTask">
       <classpath>
          <pathelement location="${localRepository}/net/sourceforge/retroweaver/retroweaver/1.2.3/retroweaver-1.2.3.jar"/>
          <pathelement location="${localRepository}/net/sourceforge/retroweaver/retroweaver-rt/1.2.3/retroweaver-rt-1.2.3.jar"/>
          <pathelement location="${localRepository}/asm/asm/2.2.1/asm-2.2.1.jar"/>
          <pathelement location="${localRepository}/asm/asm-commons/2.2.1/asm-commons-2.2.1.jar"/>
          <pathelement location="${localRepository}/backport-util-concurrent/backport-util-concurrent/2.1/backport-util-concurrent-2.1.jar"/>
       </classpath>
    </taskdef>

    <target name="check-downloaded">
        <condition property="already.downloaded" >
           <and>
              <available file="${basedir}${download.dir}engines.zip"/>
           </and>
        </condition>

        <!-- these are required for the mvn install command to work correctly -->
        <condition property="maven.suffix" value="">
            <os family="unix"/>
        </condition>
        <condition property="maven.suffix" value=".bat">
            <os family="windows"/>
        </condition>
    </target>

    <target name="download-engines" depends="check-downloaded" unless="already.downloaded">
        <mkdir dir="${basedir}${download.dir}"/>
        <get src="https://scripting.dev.java.net/files/documents/4957/37593/jsr223-engines.zip"
            dest="${download.file}"
            verbose="true"
            usetimestamp="false"/>
        <unzip src="${download.file}"
            dest="${basedir}${download.dir}engines"
            overwrite="false"/>
    </target>

</project>
