#!/bin/bash
set -e

source ${OPENSHIFT_JBOSSEWS_DIR}/bin/util
source $OPENSHIFT_CARTRIDGE_SDK_BASH

export_java_home

OPENSHIFT_MAVEN_MIRROR="${OPENSHIFT_REPO_DIR}/.openshift/config/settings.base.xml"

if [ ! -f $OPENSHIFT_MAVEN_MIRROR ]; then
  OPENSHIFT_MAVEN_MIRROR="${OPENSHIFT_JBOSSEWS_DIR}/versions/shared/configuration/settings.base.xml"
fi

if `echo $OPENSHIFT_GEAR_DNS | egrep -qe "\.rhcloud\.com"`; then 
  OPENSHIFT_MAVEN_MIRROR="${OPENSHIFT_REPO_DIR}/.openshift/config/settings.rhcloud.xml"

  if [ ! -f $OPENSHIFT_MAVEN_MIRROR ]; then
    OPENSHIFT_MAVEN_MIRROR="${OPENSHIFT_JBOSSEWS_DIR}/versions/shared/configuration/settings.rhcloud.xml"
  fi
fi

if [ ! -f ${OPENSHIFT_REPO_DIR}pom.xml ]; then
  echo "Skipping Maven build due to absence of pom.xml"
  exit 0
fi

if marker_present "skip_maven_build"; then
  echo "skip_maven_build marker found; build will be skipped"
  exit 0
fi

if force_clean_build_enabled_for_latest_deployment; then
  echo "force_clean_build marker found; removing Maven dependencies."
  rm -rf ${OPENSHIFT_HOMEDIR}.m2/* ${OPENSHIFT_HOMEDIR}.m2/.[^.]*
fi

# Calculate build heap size
max_memory_mb=${OPENSHIFT_GEAR_MEMORY_MB}
MAVEN_JVM_HEAP_RATIO=0.75
max_heap=$( echo "$max_memory_mb * $MAVEN_JVM_HEAP_RATIO" | bc | awk '{print int($1+0.5)}')
OPENSHIFT_MAVEN_XMX="-Xmx${max_heap}m"

export MAVEN_OPTS="$OPENSHIFT_MAVEN_XMX"

pushd ${OPENSHIFT_REPO_DIR} > /dev/null

if [ -z "$MAVEN_OPTS" ]; then
  export MAVEN_OPTS="$OPENSHIFT_MAVEN_XMX"
fi

if [ -z "$MAVEN_ARGS" ]; then
  export MAVEN_ARGS="clean package -Popenshift -DskipTests"
fi

if [ -n "$OPENSHIFT_MAVEN_MIRROR" ]; then
    echo "Using Maven mirror $OPENSHIFT_MAVEN_MIRROR"
    mvn --global-settings $OPENSHIFT_MAVEN_MIRROR --version
    MVN_CMD="mvn --global-settings $OPENSHIFT_MAVEN_MIRROR $MAVEN_ARGS"
else
    mvn --version
    MVN_CMD="mvn $MAVEN_ARGS"
fi

echo "Found pom.xml... attempting to build with '$MVN_CMD'"

$MVN_CMD

popd > /dev/null
