#!/usr/bin/env bash
#*******************************************************************************
# Copyright (c) 2016 IBM Corporation and others.
# All rights reserved. This program and the accompanying materials
# are made available under the terms of the Eclipse Public License v1.0
# which accompanies this distribution, and is available at
# http://www.eclipse.org/legal/epl-v10.html
#
# Contributors:
#     David Williams - initial API and implementation
#*******************************************************************************
#

if [ $# -ne 1 ]; then
  echo USAGE: $0 env_file
  exit 1
fi

if [ ! -r "$1" ]; then
  echo "$1" cannot be read
  echo USAGE: $0 env_file
  exit 1
fi

source "$1"

export SCRIPT_PATH=${SCRIPT_PATH:-$(pwd)}

cd $BUILD_ROOT

source $SCRIPT_PATH/build-functions.shsource


# derived values
gitCache=$( fn-git-cache "$BUILD_ROOT")
aggDir=$( fn-git-dir "$gitCache" "$AGGREGATOR_REPO" )

if [ -z "$BUILD_ID" ]; then
  BUILD_ID=$(fn-build-id "$BUILD_TYPE" )
fi

buildDirectory=$( fn-build-dir "$BUILD_ROOT" "$BUILD_ID" "$STREAM" )
basebuilderDir=$( fn-basebuilder-dir "$BUILD_ROOT" "$BUILD_ID" "$STREAM" )

printf "\n\tINFO: %s\n" "calling getEBuilderForDropDir.sh from publish-eclipse.sh"
$SCRIPT_PATH/getEBuilderForDropDir.sh $buildDirectory $EBUILDER_HASH

fn-checkout-basebuilder "$basebuilderDir"

launcherJar=$( fn-basebuilder-launcher "$basebuilderDir" )

EBuilderDir="$buildDirectory"/eclipse.platform.releng.aggregator/eclipse.platform.releng.tychoeclipsebuilder

# Temporary fork/condition
# if [[ "true" == "${USING_TYCHO_SNAPSHOT}" ]]
# then
  fn-gather-23-compile-logs "$BUILD_ID" "$aggDir" "$buildDirectory"
#else
#  fn-gather-compile-logs "$BUILD_ID" "$aggDir" "$buildDirectory"
# fi
echo -e "\n\n[DEBUG] == critical values in publish-eclipse.sh == "
echo -e "\n[DEBUG] buildDirectory in publish-eclipse.sh: $buildDirectory"
echo -e "\n[DEBUG] BUILD_ID in publish-eclipse.sh: $BUILD_ID"
fn-parse-compile-logs "$BUILD_ID" \
  "${EBuilderDir}/eclipse/helper.xml" \
  "$buildDirectory" "$launcherJar"

fn-summarize-comparator-logs "$BUILD_ID" \
  "${EBuilderDir}/eclipse/buildScripts/eclipse_compare.xml" \
  "$buildDirectory" "$launcherJar"

# As far as I know, "API Tooling" is not very useful for a patch feature, or X or Y build.
if  [[ ! $BUILD_TYPE =~ [PX] ]]
then
   fn-summarize-apitooling "$BUILD_ID" \
     "${EBuilderDir}/eclipse/buildScripts/api-tools-builder.xml" \
     "$buildDirectory" "$launcherJar"
fi
fn-publish-eclipse "$BUILD_TYPE" "$STREAM" "$BUILD_ID" "$aggDir" "$buildDirectory" "$launcherJar"
