<?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="download.dir" value="${basedir}/engines-download"/>
    <property name="download.engines" value="${download.dir}/engines"/>
    <property name="download.file" value="${download.dir}/engines.zip"/>
    <property name="merged.engines.dir" value="${basedir}/target/merged-engines"/>
    <property name="temp.services.dir" value="${basedir}/target/services-temp"/>

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

    </target>

    <macrodef name="unpack_factory">
	<attribute name="dir" />
        <attribute name="jar" />
        <sequential>
            <echo level="info" message="** Extracting factory for @{dir} **"/>
            <!-- Unpack factory into shared dir (except services) -->
            <unzip src="${download.engines}/@{dir}/build/@{jar}.jar" dest="${merged.engines.dir}" overwrite="true">
                <patternset>
                    <exclude name="**/javax.script.*"/>
                </patternset>
            </unzip>
            <!-- Unpack services into work directory, replacing previous file -->
            <unzip src="${download.engines}/@{dir}/build/@{jar}.jar" dest="${temp.services.dir}" overwrite="true">
                <patternset>
                    <include name="**/javax.script.*"/>
                </patternset>
            </unzip>
            <!-- Append the services file to the common services file -->
            <concat destfile="${merged.engines.dir}/META-INF/services/javax.script.ScriptEngineFactory" append="true">
                <fileset dir="${temp.services.dir}"/>
            </concat>
        </sequential>
		</macrodef>

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

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

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

        <delete dir="${merged.engines.dir}" quiet="true"/>
        <mkdir dir="${merged.engines.dir}"/>

        <delete dir="${temp.services.dir}" quiet="true"/>
        <mkdir dir="${temp.services.dir}"/>

        <!-- unpack_factory dir="beanshell" jar="bsh-engine"/ -->
        <!-- unpack_factory dir="browserjs" jar="browserjs-engine"/ -->
        <!-- unpack_factory dir="ejs" jar="js-engine"/ -->
        <!-- unpack_factory dir="freemarker" jar="freemarker-engine"/ -->
        <!-- unpack_factory dir="groovy" jar="groovy-engine"/ -->
        <!-- unpack_factory dir="jacl" jar="jacl-engine"/ -->
        <!-- unpack_factory dir="jaskell" jar="jaskell-engine"/ -->
        <!-- unpack_factory dir="java" jar="java-engine"/ -->
        <!-- unpack_factory dir="javascript" jar="js-engine"/ -->
        <unpack_factory dir="javascript" jar="js-engine"/>
        <!-- unpack_factory dir="jawk" jar="jawk-engine"/ -->
        <!-- unpack_factory dir="jelly" jar="jelly-engine"/ -->
        <!-- unpack_factory dir="jep" jar="jep-engine"/ -->
        <!-- unpack_factory dir="jexl" jar="jexl-engine"/ -->
        <!-- unpack_factory dir="jruby" jar="jruby-engine"/ -->
        <!-- unpack_factory dir="jst" jar="jst-engine"/ -->
        <!-- unpack_factory dir="judo" jar="judo-engine"/ -->
        <!-- unpack_factory dir="juel" jar="juel-engine"/ -->
        <unpack_factory dir="jython" jar="jython-engine"/>
        <!-- unpack_factory dir="ognl" jar="ognl-engine"/ -->
        <!-- unpack_factory dir="pnuts" jar="pnuts-jsr223"/ -->
        <!-- unpack_factory dir="scheme" jar="scheme-engine"/ -->
        <!-- unpack_factory dir="velocity" jar="velocity-engine"/ -->
        <!-- unpack_factory dir="xpath" jar="xpath-engine"/ -->
        <!-- unpack_factory dir="xslt" jar="xslt-engine"/ -->

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

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

        <!-- Delete work directory -->
        <delete dir="${merged.engines.dir}" />
        <delete dir="${temp.services.dir}" />

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

    	<echo level="info">localRepository='${localRepository}'</echo>
        <taskdef name="retroweaver" classname="net.sourceforge.retroweaver.ant.RetroWeaverTask">
           <classpath>
              <pathelement location="${localRepository}/net/sourceforge/retroweaver/retroweaver/2.0.7/retroweaver-2.0.7.jar"/>
              <pathelement location="${localRepository}/net/sourceforge/retroweaver/retroweaver-rt/2.0.7/retroweaver-rt-2.0.7.jar"/>
              <pathelement location="${localRepository}/asm/asm/3.1/asm-3.1.jar"/>
              <pathelement location="${localRepository}/asm/asm-commons/3.1/asm-commons-3.1.jar"/>
              <pathelement location="${localRepository}/asm/asm-util/3.1/asm-util-3.1.jar"/>
              <pathelement location="${localRepository}/backport-util-concurrent/backport-util-concurrent/2.2/backport-util-concurrent-2.2.jar"/>
           </classpath>
        </taskdef>

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

        <!-- Delete the temporary work file -->
        <delete file="${basedir}/target/bsf-engines.tmp.jar"/>

    </target>

    <target name="check-downloaded">
        <condition property="already.downloaded" >
           <and>
              <available file="${download.file}"/>
           </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="${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="${download.engines}"
            overwrite="false"/>
    </target>

</project>
