<!--

    Copyright (c) 1998, 2020 Oracle and/or its affiliates. All rights reserved.

    This program and the accompanying materials are made available under the
    terms of the Eclipse Public License v. 2.0 which is available at
    http://www.eclipse.org/legal/epl-2.0,
    or the Eclipse Distribution License v. 1.0 which is available at
    http://www.eclipse.org/org/documents/edl-v10.php.

    SPDX-License-Identifier: EPL-2.0 OR BSD-3-Clause

-->

<!--
  Contributors:
      egwin - initial API and implementation
-->

<!---
For each oracle project
Find out if current checkin is latest hash
  find current hash
  find checked in hash
  compare hash if != mark for build
if build=true
  set build arguments
  build
  checkin results
-->
<!--
*   Ant naming conventions:
*   - regardless of the actual OS platform,'/' is the directory separator
*     (Ant will convert as appropriate).
*   - multi-word properties use periods '.'
*     - properties ending in .jar define jarfile names only (no path)
*     - properties ending in .lib are fully qualified jars (path and filename)
*     - properties ending in .dir are directory paths
*     - properties ending in .path are path refid names (classpath fragments)
*   - multi-word targets use hyphens '-'
*     - targets beginning with test- are reserved for high level test targets,
*       and are used in test results parsing
*     - targets typically use the form <action>-<object>-<type> (ie. package-bundle-zip)
*   - multi-word macros use underscores '_'
*   - multi-word macro attributes are concatenated
*     e.g. 'runpathref'
*   - multi-word tasks (taskdef) names are concatenated
*     e.g. 'validateconnection'
*   - OS environment variables are in ALLCAPS and have 'env' as a prefix
*     e.g. ${env.XXX}.
*   - Ant properties are lower case.
-->
<project name="oraclebuild" default="build" basedir=".">

    <!-- Default ant target, compiles and translates resources, does not run tests. -->
    <target name="build"               depends="clean-oracle, build-oracle, build-nosql"/>
    <target name="process-control"     depends="build, commit-oracle, commit-nosql, validate-commits"/>

    <target name="init">
        <!-- The following variables should be passed from Hudson:
                 env.JAVA_HOME   - JAVA_HOME as defined by Hudson
                 git.exec        - fully qualified path to git executable
                 hudson.workspace- WORKSPACE as defined by the Hudson slave
                 M2_HOME         - location of Maven3 install (on build server)
                 branch          - name of Git branch (master, 2.3, 2.4, 2.5, etc)

             However, just in case default values are set:
        -->
        <property name="git.exec"        value="/usr/bin/git"/>
        <property name="branch"          value="master"/>

        <echo message=" "/>
        <echo message="os.name         = '${os.name}'"/>
        <echo message="os.arch         = '${os.arch}'"/>
        <echo message="os.version      = '${os.version}'"/>
        <echo message=" ---"/>
        <echo message="env.JAVA_HOME   = '${env.JAVA_HOME}'"/>
        <echo message="git.exec        = '${git.exec}'"/>
        <echo message="hudson.workspace= '${hudson.workspace}'"/>
        <echo message="M2_HOME         = '${M2_HOME}'"/>
        <echo message="branch          = '${branch}'"/>
        <echo message=" ---"/>

        <tstamp>
           <format property="oraclebuild.build.date" pattern="yyyyMMdd"/>
           <format property="oraclebuild.build.time" pattern="HHmm"/>
        </tstamp>
        <echo message="oraclebuild.build.date          = '${oraclebuild.build.date}'"/>
        <echo message="oraclebuild.build.time          = '${oraclebuild.build.time}'"/>
        <echo message=" ---"/>

        <!-- Convert basedir to *nix format to avoid pathing issues with certain commands -->
        <dirname  property="oraclebuild.build.location_temp" file="${ant.file.oraclebuild}"/>
        <pathconvert targetos="unix" property="oraclebuild.build.location">
            <path>
                <pathelement location="${oraclebuild.build.location_temp}"/>
            </path>
        </pathconvert>
        <!-- oraclelibs.2.base.dir needs to be explicit (not relative) for antcall usage            -->
        <property name="oraclebuild.2.base.dir"           value="${oraclebuild.build.location}"/>
        <property name="oraclebuild.2.buildsystem.dir"    value="${oraclebuild.build.location}/buildsystem"/>
        <property name="oraclebuild.2.common.plugins.dir" value="${oraclebuild.2.base.dir}/plugins"/>
        <property name="oraclebuild.2.nosql.dir"          value="${oraclebuild.2.base.dir}/foundation/org.eclipse.persistence.nosql"/>
        <property name="oraclebuild.2.oracle.dir"         value="${oraclebuild.2.base.dir}/foundation/org.eclipse.persistence.oracle"/>
        <property name="oraclebuild.2.oracle.nosql.dir"   value="${oraclebuild.2.base.dir}/foundation/org.eclipse.persistence.oracle.nosql"/>

        <echo message="ant.project.name                = '${ant.project.name}'"/>
        <echo message="basedir                         = '${basedir}'"/>
        <echo message="oraclebuild.build.location      = '${oraclebuild.build.location}'"/>
        <echo message="oraclebuild.2.base.dir          = '${oraclebuild.2.base.dir}'"/>
        <echo message="oraclebuild.2.common.plugins.dir= '${oraclebuild.2.common.plugins.dir}'"/>
        <echo message="oraclebuild.2.nosql.dir         = '${oraclebuild.2.nosql.dir}'"/>
        <echo message="oraclebuild.2.oracle.dir        = '${oraclebuild.2.oracle.dir}'"/>
        <echo message="oraclebuild.2.oracle.nosql.dir  = '${oraclebuild.2.oracle.nosql.dir}'"/>
        <echo message=" ---"/>

        <condition property="custom.properties.message" value="Loading user defined properties from: '${user.home}/build.properties'"
                                                         else="No custom properties file at '${user.home}/build.properties'. Continuing build using defaults.">
            <available file="${user.home}/build.properties"/>
        </condition>
        <echo message="${custom.properties.message}"/>
        <property file="${user.home}/build.properties"/>
        <echo message=" "/>
        <property file="${oraclebuild.2.base.dir}/antbuild.properties"/>
        <property name="oraclebuild.target" value="build-oracle-extension"/>

        <!-- Sets default for all extensions.depend dir locations to static paths -->
        <property name="oracle.extensions.depend.dir" value="${oraclebuild.2.base.dir}/../extension.oracle.lib.external"/>
        <echo message="oracle.extensions.depend.dir   = '${oracle.extensions.depend.dir}'"/>
        <!-- This HAS to be defined after allowing user redefinitions (which will cause the condition not to set anything) -->
        <!-- This tests to make sure the extensions dir exists, if not sets to a existant dummy location -->
        <condition property="extensions.depend.dir"   value="${oraclebuild.2.base.dir}/../extension.lib.external"
                                                       else="${oraclebuild.build.location}">
            <available file="${oraclebuild.2.base.dir}/../extension.lib.external" type="dir"/>
        </condition>
        <echo message="extensions.depend.dir          = '${extensions.depend.dir}'"/>

        <!-- Custom task definitions -->
        <property name="custom.tasks.lib"               value="${oraclebuild.2.buildsystem.dir}/ant_customizations.jar"/>
        <property name="custom.echo.task.class"         value="org.eclipse.persistence.buildtools.ant.taskdefs.Say"/>
        <property name="custom.selectbundle.task.class" value="org.eclipse.persistence.buildtools.ant.taskdefs.SelectBundle"/>
        <echo message="custom.tasks.lib               ='${custom.tasks.lib}'"/>
        <echo message="custom.echo.task.class         ='${custom.echo.task.class}'"/>
        <echo message="custom.selectbundle.task.class ='${custom.selectbundle.task.class}'"/>
        <echo message=" ---"/>
        <taskdef name="say"          classname="${custom.echo.task.class}"         classpath="${custom.tasks.lib}"/>
        <taskdef name="selectbundle" classname="${custom.selectbundle.task.class}" classpath="${custom.tasks.lib}"/>

        <!-- Feature Dependency variables -->
        <property name="oracle.ext.prefix"     value="org.eclipse.persistence.oracle"/>
        <property name="oracle.ext.criteria"   value="[0.0.1,9.0.0)"/>
        <property name="oracle.nosql.prefix"   value="org.eclipse.persistence.oracle.nosql"/>
        <property name="oracle.nosql.criteria" value="[0.0.1,9.0.0)"/>

        <condition property="windows.os" value="true">
            <contains string="${os.name}" substring="Win"/>
        </condition>
        <say  message="Windows OS detected. Command-line Git tools will likely not run properly."         if="windows.os"/>
        <say  message="    To build manually use:"                                                        if="windows.os"/>
        <say  message="         ant -f antbuild.xml -Doracle.target=&lt;target&gt; ${oraclebuild.target}" if="windows.os"/>
        <say  message=" "                                                                                 if="windows.os"/>
        <say  message="Aborting...."                                                                      if="windows.os"/>
        <fail message="This buildfile should be used with a *nix or OS X operating system."               if="windows.os"/>
        <!-- Verify validity of 'git.exec' value -->
        <available file="${git.exec}" property="git.exec.exist"/>
        <fail message="Cannot find: ${git.exec}" unless="git.exec.exist"/>
    </target>

    <target name="establish-baseline" if="git.exec" depends="init">
        <!-- Determine starting hash values of repo in specific locations (base proj, oracle, and nosql dirs) -->
        <get_git_hash githashproperty="prebuild.git.hash"   repoprojectdir="${oraclebuild.2.base.dir}"/>
        <get_git_hash githashproperty="prebuild.ext.hash"   repoprojectdir="${oraclebuild.2.oracle.dir}"/>
        <get_git_hash githashproperty="prebuild.nosql.hash" repoprojectdir="${oraclebuild.2.oracle.nosql.dir}"/>
        <!-- Report results -->
        <say  message="prebuild.git.hash              = '${prebuild.git.hash}'"       if="prebuild.git.hash"/>
        <say  message="prebuild.ext.hash              = '${prebuild.ext.hash}'"       if="prebuild.ext.hash"/>
        <say  message="prebuild.nosql.hash            = '${prebuild.nosql.hash}'"     if="prebuild.nosql.hash"/>
        <say  message="prebuild.git.hash              = undefined"                unless="prebuild.git.hash"/>
        <say  message="prebuild.ext.hash              = undefined"                unless="prebuild.ext.hash"/>
        <say  message="prebuild.nosql.hash            = undefined"                unless="prebuild.nosql.hash"/>

        <!-- Determine existing bundle versions -->
        <selectbundle basename="${oracle.ext.prefix}"     directory="${oraclebuild.2.common.plugins.dir}"
                     criterion="${oracle.ext.criteria}"    property="prebuild.oracle.ext.version"  versiononly="true"
        />
        <selectbundle basename="${oracle.nosql.prefix}"   directory="${oraclebuild.2.common.plugins.dir}"
                     criterion="${oracle.nosql.criteria}"  property="prebuild.oracle.nosql.version"   versiononly="true"
        />

        <!-- Report results -->
        <say  message="prebuild.oracle.ext.version    = '${prebuild.oracle.ext.version}'"                     if="prebuild.oracle.ext.version"/>
        <say  message="prebuild.oracle.nosql.version  = '${prebuild.oracle.nosql.version}'"                   if="prebuild.oracle.nosql.version"/>
        <say  message="prebuild.oracle.ext.version    = '${oracle.ext.prefix}_*.jar' bundle not found."   unless="prebuild.oracle.ext.version"/>
        <say  message="prebuild.oracle.nosql.version  = '${oracle.nosql.prefix}_*.jar' bundle not found." unless="prebuild.oracle.nosql.version"/>
        <echo message=" ---"/>

        <!-- Validate we have what we need to proceed -->
        <condition property="missing.hash" value="true">
            <or>
                <not> <isset property="prebuild.git.hash"/> </not>
                <not> <isset property="prebuild.ext.hash"/> </not>
                <not> <isset property="prebuild.nosql.hash"/> </not>
            </or>
        </condition>
        <fail message="Cannot determine repository state (one or more hashes undefined). Aborting..." if="missing.hash"/>
    </target>

    <target name="set-build-required" depends="establish-baseline">
        <!-- This could get increadibly complex: To compile both bundles together, not only do I need to determine if both bundles -->
        <!-- should be built, but I need to figure out if the qualifiers are the same (based upon the hash of the project itself). -->
        <!-- This means the potential of three build paths: (compile both together [if same hash], compile one, compile both       -->
        <!-- [different qualifiers]). So it looks like while compiling together is more efficient with Maven, it would only add    -->
        <!-- more complexity to this process. Therefore, the variables will be set to call the compile for each bundle if it is    -->
        <!-- required and use the bundles already determined hash, regardless of whether the hashes match.                         -->

        <!-- Determine if Oracle Extension needs rebuild                                                                           -->
        <condition property="oracle.current" value="true">
            <contains string="${prebuild.oracle.ext.version}" substring="${prebuild.ext.hash}"/>
        </condition>
        <!-- Determine if Oracle NoSQL Extension needs rebuild -->
        <condition property="nosql.current" value="true">
            <contains string="${prebuild.oracle.nosql.version}" substring="${prebuild.nosql.hash}"/>
        </condition>
        <say  message="oracle.current                 = '${oracle.current}'     ('prebuild.oracle.ext.version' contains 'prebuild.ext.hash')"        if="oracle.current"/>
        <say  message="nosql.current                  = '${nosql.current}'     ('prebuild.oracle.nosql.version' contains 'prebuild.nosql.hash')"     if="nosql.current"/>
        <say  message="oracle.current                 = undefined ('prebuild.oracle.ext.version' doesn't contain 'prebuild.ext.hash')"           unless="oracle.current"/>
        <say  message="nosql.current                  = undefined ('prebuild.oracle.nosql.version' doesn't contain 'prebuild.nosql.hash')"       unless="nosql.current"/>

        <!-- set what should clean -->
        <!-- if either oracle or nosql need rebuild (clean will need to happen in either case)-->
        <condition property="clean.target" value="oracle">
            <and>
                <not> <isset property="oracle.current"/> </not>
                <not> <isset property="nosql.current"/>  </not>
            </and>
        </condition>
        <condition property="clean.target" value="oracle.ext">
            <and>
                <not> <isset property="oracle.current"/> </not>
                <isset property="nosql.current"/>
            </and>
        </condition>
        <condition property="clean.target" value="oracle.nosql">
            <and>
                <isset property="oracle.current"/>
                <not> <isset property="nosql.current"/>  </not>
            </and>
        </condition>

        <say  message="clean.target                   = '${clean.target}'"      if="clean.target"/>
        <say  message="clean.target                   = undefined"          unless="clean.target"/>
    </target>

    <!-- ================================================================ -->
    <!--  BUILD TARGETS                                                   -->
    <!-- ================================================================ -->
    <target name="report-build-not-required" unless="clean.target" depends="set-build-required">
        <echo message="Oracle extensions appear current. Conditions not met for rebuild. Build target will be bypassed."/>
    </target>


    <target name="clean-oracle" if="clean.target" depends="report-build-not-required">
        <!-- === Which extensions targeted is based on ${oracle.target} === -->
        <!--   oracle.target = oracle.ext:   build oracle extension         -->
        <!--                 = oracle.nosql: build oracle nosql extension   -->
        <!--                 = oracle:       build both                     -->
        <ant antfile="antbuild.xml" dir="${oraclebuild.2.base.dir}"     target="clean-oracle-extension">
           <property name="version.qualifier" value="v${oraclebuild.build.date}-${prebuild.git.hash}"/>
           <property name="oracle.target" value="${clean.target}"/>
        </ant>
        <!-- Also need to clean the compdeps repo so it is forced to regenerate -->
        <ant antfile="antbuild.xml" dir="${oraclebuild.2.base.dir}"     target="generate-local-compdeps">
           <property name="generate.compdeps" value="true"/>
        </ant>
        <!-- What about the oracle repo? force regen, or allow manual install of local repo? -->
    </target>

    <target name="build-oracle" unless="oracle.current" >
        <!-- === Which extensions targeted is based on ${oracle.target} === -->
        <!--   oracle.target = oracle.ext:   build oracle extension         -->
        <!--                 = oracle.nosql: build oracle nosql extension   -->
        <!--                 = oracle:       build both                     -->
        <build_extension          qualifierhash="prebuild.ext.hash" buildtarget="oracle.ext"/>

        <selectbundle basename="${oracle.ext.prefix}"     directory="${oraclebuild.2.common.plugins.dir}"
                     criterion="${oracle.ext.criteria}"    property="postbuild.oracle.ext.version"  versiononly="true"
        />
        <validate_extension_build prebuildhashproperty="prebuild.ext.hash"   currentversionproperty="postbuild.oracle.ext.version"   prebuildversion="${prebuild.oracle.ext.version}"   successproperty="commit.oracle" failureproperty="oracle.build.failed"/>
    </target>

     <target name="build-nosql" unless="nosql.current" >
        <!-- === Which extensions targeted is based on ${oracle.target} === -->
        <!--   oracle.target = oracle.ext:   build oracle extension         -->
        <!--                 = oracle.nosql: build oracle nosql extension   -->
        <!--                 = oracle:       build both                     -->
        <build_extension          qualifierhash="prebuild.nosql.hash"  buildtarget="oracle.nosql"/>
        <selectbundle basename="${oracle.nosql.prefix}"   directory="${oraclebuild.2.common.plugins.dir}"
                     criterion="${oracle.nosql.criteria}"  property="postbuild.oracle.nosql.version"   versiononly="true"
        />
        <validate_extension_build prebuildhashproperty="prebuild.nosql.hash" currentversionproperty="postbuild.oracle.nosql.version" prebuildversion="${prebuild.oracle.nosql.version}" successproperty="commit.nosql" failureproperty="nosql.build.failed"/>
    </target>

    <!-- ================================================================ -->
    <!--  COMMIT TARGETS                                                  -->
    <!-- ================================================================ -->
    <target name="oracle-failed" if="oracle.build.failed" depends="">
        <echo message="cannot commit oracle extention, no bundle to commit"/>
        <!-- revert?? -->
    </target>

    <target name="commit-oracle" if="commit.oracle" depends="oracle-failed">
        <echo message="commit-oracle"/>
        <!-- Need:
            ${oracle.ext.prefix} prefix of bundles to commit
            ${postbuild.oracle.ext.version} version of bundles to commit
            ${prebuild.oracle.ext.version} to delete old bundle from repo
        -->
        <commit_extension targetprefix="${oracle.ext.prefix}" currentversion="${postbuild.oracle.ext.version}" prebuildversion="${prebuild.oracle.ext.version}"/>
    </target>

    <target name="nosql-failed" if="nosql.build.failed" depends="">
        <echo message="cannot commit oracle nosql extention, no bundle to commit"/>
        <!-- revert?? -->
    </target>

    <target name="commit-nosql" if="commit.nosql" depends="nosql-failed">
        <echo message="commit-nosql"/>
        <!-- Need:
            ${oracle.nosql.prefix} prefix of bundles to commit
            ${postbuild.oracle.nosql.version} version of bundles to commit
            ${prebuild.oracle.nosql.version} to delete old bundle from repo
        -->
        <commit_extension targetprefix="${oracle.nosql.prefix}" currentversion="${postbuild.oracle.nosql.version}" prebuildversion="${prebuild.oracle.nosql.version}"/>
    </target>

   <target name="validate-commits">
        <!-- If (! oracle.current) and commit.oracle.hash != prebuild.git.hash /was supposed to build post-commit-hash not equal prebuild haash -->


        <!-- Determine if Oracle Extension was commited       -->
        <condition property="oracle.comitted" value="true">
            <and>
                <not> <isset property="oracle.current"/> </not>
                <contains string="${postbuild.oracle.ext.version}" substring="${postbuild.ext.hash}"/>
            </and>
        </condition>
        <!-- Determine if Oracle NoSQL Extension was commited -->
        <condition property="nosql.comitted" value="true">
            <and>
                <not> <isset property="nosql.current"/>  </not>
                <contains string="${postbuild.oracle.nosql.version}" substring="${postbuild.nosql.hash}"/>
            </and>
        </condition>
    </target>

    <!-- ================================================================ -->
    <!--  MACRO DEFINITIONS                                               -->
    <!-- ================================================================ -->
    <!-- Needed to reduce code redunancy:                                 -->
    <!--   antcall is both memory intensive, and operate                  -->
    <!--   outside current environment                                    -->
    <!-- ================================================================ -->
    <macrodef name="get_git_hash">
        <attribute name="githashproperty"/>
        <attribute name="repoprojectdir"/>
        <sequential>
            <!-- echo message="gitHashProperty = '@{githashproperty}'"/>
            <echo message="repoProjectDir  = '@{repoprojectdir}'"/ -->
            <exec outputproperty="@{githashproperty}"
                failonerror="false"
                failifexecutionfails="false"
                errorproperty="githash.failed"
                logError="true"
                executable="${git.exec}">
                <arg value="log"/>
                <arg value="-1"/>
                <arg value="--format=%h"/>
                <arg line="@{repoprojectdir}"/>
            </exec>
        </sequential>
    </macrodef>

    <macrodef name="build_extension">
        <attribute name="qualifierhash"/>
        <attribute name="buildtarget"/>
        <sequential>
        <!-- === Which extensions targeted is based on ${oracle.target} === -->
        <!--   oracle.target = oracle.ext:   build oracle extension         -->
        <!--                 = oracle.nosql: build oracle nosql extension   -->
        <!--                 = oracle:       build both                     -->
        <ant antfile="antbuild.xml" dir="${oraclebuild.2.base.dir}"     target="build-oracle-extension">
           <property name="version.qualifier" value="v${oraclebuild.build.date}-${@{qualifierhash}}"/>
           <property name="oracle.target" value="@{buildtarget}"/>
        </ant>
        </sequential>
    </macrodef>

    <macrodef name="validate_extension_build">
        <!-- Verify build was successful.                                             -->
        <!-- Compare:                                                                 -->
        <!--    ${currentversionproperty} to prebuildversion (shouldn't match)        -->
        <!--    ${prebuildhashproperty} should be a substring of currentversion       -->
        <!-- Set:                                                                     -->
        <!--    successproperty to true if above true                                 -->
        <!--    (implies <extension>.current was false & so build was needed)         -->
        <!--    failureproperty is set if above is false                              -->
        <!--    (implies build was necessary, but something failed)                   -->
        <!--    (need separate property for process flow: "task if=" tests existance) -->
        <attribute name="prebuildhashproperty"/>
        <attribute name="currentversionproperty"/>
        <attribute name="prebuildversion"/>
        <attribute name="successproperty"/>
        <attribute name="failureproperty"/>
        <sequential>
            <condition property="@{successproperty}" value="true">
                <and>
                    <isset property="@{currentversionproperty}"/>
                    <not> <equals arg1="${@{currentversionproperty}}" arg2="@{prebuildversion}"/>  </not>
                    <contains string="${@{currentversionproperty}}" substring="${@{prebuildhashproperty}}"/>
                </and>
            </condition>
            <condition property="@{failureproperty}" value="true">
                <not> <isset property="@{successproperty}"/> </not>
            </condition>
            <say message="Bundle was successfully generated:"                                                     if="@{successproperty}"/>
            <say message="    @{currentversionproperty} ('${@{currentversionproperty}}') != '@{prebuildversion}'" if="@{successproperty}"/>
            <say message="    and '${@{prebuildhashproperty}}' is a substring of '${@{currentversionproperty}}'"  if="@{successproperty}"/>
            <say message="Bundle generation failure detected."                                                    if="@{failureproperty}"/>
        </sequential>
    </macrodef>


    <macrodef name="commit_extension">
        <!-- Commit built artifacts -->
        <attribute name="targetprefix"/>
        <attribute name="currentversion"/>
        <attribute name="prebuildversion"/>
        <sequential>
        <!-- Checkin process -->
            <!-- git pull -->
            <exec
                failonerror="false"
                failifexecutionfails="false"
                errorproperty="githash.failed"
                logError="true"
                executable="${git.exec}">
                <arg value="pull"/>
            </exec>
            <!-- cd plugins -->
            <!-- git rm ${targetprefix}_${prebuildversion}.jar ${targetprefix}.source_${prebuildversion}.jar -->
            <exec
                dir="plugins"
                failonerror="false"
                failifexecutionfails="false"
                errorproperty="githash.failed"
                logError="true"
                executable="${git.exec}">
                <arg value="rm"/>
                <arg line="@{targetprefix}_@{prebuildversion}.jar @{targetprefix}.source_@{prebuildversion}.jar"/>
            </exec>
            <!-- git add -f ${targetprefix}_${currentversion}.jar ${targetprefix}.source_${currentversion}.jar -->
            <exec
                dir="plugins"
                failonerror="false"
                failifexecutionfails="false"
                errorproperty="githash.failed"
                logError="true"
                executable="${git.exec}">
                <arg value="add"/>
                <arg value="-f"/>
                <arg line="@{targetprefix}_@{currentversion}.jar @{targetprefix}.source_@{currentversion}.jar"/>
            </exec>
            <!-- Not needed:   git status -->
            <!-- git commit -m "contribute new oracle bundles" -->
            <exec
                failonerror="false"
                failifexecutionfails="false"
                errorproperty="githash.failed"
                logError="true"
                executable="${git.exec}">
                <arg value="commit"/>
                <arg value="-s"/>
                <arg line="-m 'contribute new oracle bundles for @{targetprefix}'"/>
                <arg line="-m '@{targetprefix}_@{currentversion}.jar @{targetprefix}.source_@{currentversion}.jar'"/>
            </exec>
            <!-- git push -->
            <!-- DO NOT push changes for now -->
            <!--
            <exec
                failonerror="false"
                failifexecutionfails="false"
                errorproperty="githash.failed"
                logError="true"
                executable="${git.exec}">
                <arg value="push"/>
            </exec>
            -->
        </sequential>
    </macrodef>
</project>
