<!--/*******************************************************************************
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License v1.0 and Eclipse Distribution License v. 1.0
* which accompanies this distribution.
* The Eclipse Public License is available at http://www.eclipse.org/legal/epl-v10.html
* and the Eclipse Distribution License is available at
* http://www.eclipse.org/org/documents/edl-v10.php.
*
*   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.
*
* 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
-->

<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}" currentversionproperty="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}" currentversionproperty="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
                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
                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 line="-m "contribute new oracle bundles""/>
            </exec>
            <!-- git push -->
            <exec
                failonerror="false"
                failifexecutionfails="false"
                errorproperty="githash.failed"
                logError="true"
                executable="${git.exec}">
                <arg value="push"/>
            </exec>
        </sequential>
    </macrodef>

</project>