#!/bin/bash

if [[ "$BUILD_TYPE" == "" || "$BUILD_TYPE" == none ]]; then
  BUILD_TYPE=nightly
fi

if [[ "$BUILD_KEY" == "" ]]; then
  if [[ "$BUILD_TYPE" == milestone ]]; then
    TYPE="S"
  elif [[ "$BUILD_TYPE" == nightly ]]; then
    TYPE="N"
  fi

  if [[ "$TYPE" != "" ]]; then
#    BUILD_KEY=$TYPE`echo $BUILD_TIMESTAMP | sed 's/\([0-9]*\)-\([0-9]*\)-\([0-9]*\)_\([0-9]*\)-\([0-9]*\)-\([0-9]*\)/\1\2\3-\4\5\6/g'`
    BUILD_KEY=$TYPE$BUILD_TIMESTAMP
  fi
fi

if [[ "$BUILD_LABEL" == "" ]]; then
  BUILD_LABEL=""
fi

FOLDER=$BUILD_KEY
if [[ "$BUILD_LABEL" != "" ]]; then
  FOLDER=$FOLDER-$BUILD_LABEL
fi

if [[ "$GIT" == "" ]]; then
  GIT=$WORKSPACE/git
fi

if [[ "$SCRIPTS" == "" ]]; then
  SCRIPTS=$GIT/releng/org.eclipse.oomph.releng/hudson
fi

if [[ "$DOWNLOADS" == "" ]]; then
  DOWNLOADS=/home/data/httpd/download.eclipse.org/oomph
fi

set -o nounset
set -o errexit

##################################################################################################
#
# At this point $WORKSPACE points to the following build folder structure:
#
#   $WORKSPACE/
#   $WORKSPACE/help/
#
#   $WORKSPACE/updates/
#   $WORKSPACE/updates/features/
#   $WORKSPACE/updates/plugins/
#   $WORKSPACE/updates/artifacts.jar
#   $WORKSPACE/updates/content.jar
#   $WORKSPACE/updates/org.eclipse.oomph.site.zip
#
#   $WORKSPACE/installer-products/
#   $WORKSPACE/installer-products/eclipse-inst(-jre)?(-restricted)?-(linux|mac|win)64.(tar.gz|dmg|exe|zip)
#   $WORKSPACE/installer-products/repository/
#   $WORKSPACE/installer-products/repository/binary/
#   $WORKSPACE/installer-products/repository/features/
#   $WORKSPACE/installer-products/repository/plugins/
#   $WORKSPACE/installer-products/repository/artifacts.jar
#   $WORKSPACE/installer-products/repository/content.jar
#
##################################################################################################

echo ""

PROPERTIES=$WORKSPACE/updates/repository.properties
echo "branch = $GIT_BRANCH" >> $PROPERTIES
echo "commit = $GIT_COMMIT" >> $PROPERTIES
echo "number = $BUILD_NUMBER" >> $PROPERTIES
echo "key = $BUILD_KEY" >> $PROPERTIES
echo "label = $BUILD_LABEL" >> $PROPERTIES

BUILDS=$DOWNLOADS/builds
HELP=$DOWNLOADS/help
UPDATES=$DOWNLOADS/updates
PRODUCTS=$DOWNLOADS/products
DROPS=$DOWNLOADS/drops
DROP_TYPE=$DROPS/$BUILD_TYPE
DROP=$DROP_TYPE/$FOLDER

mkdir -p $DOWNLOADS
mkdir -p $BUILDS
mkdir -p $HELP
mkdir -p $UPDATES
mkdir -p $PRODUCTS
mkdir -p $DROPS
mkdir -p $DROP_TYPE

cp -a $PROPERTIES $BUILDS/$BUILD_NUMBER.properties

PRODUCTS_TMP=$PRODUCTS.tmp
HELP_TMP=$HELP.tmp
UPDATES_TMP=$UPDATES.tmp

###################
# DOWNLOADS/DROPS #
###################

echo "Promoting $WORKSPACE/updates"
rm -rf $DROP
mkdir $DROP
cp -a $WORKSPACE/updates/* $DROP
$BASH $SCRIPTS/adjustArtifactRepository.sh \
  $DROP \
  $DROP \
  "Oomph $FOLDER" \
  $BUILD_TYPE
$BASH $SCRIPTS/adjustContentRepository.sh \
  $DROP \
  "Oomph $FOLDER"

######################
# DOWNLOADS/PRODUCTS #
######################

cd $WORKSPACE
rm -rf $PRODUCTS_TMP
mkdir $PRODUCTS_TMP
mkdir $PRODUCTS_TMP/latest

cd $WORKSPACE/installer-products
for f in *.exe *.zip *.tar.gz *.dmg; do
  echo "Promoting $f to $PRODUCTS_TMP/latest"
  cp -a $f $PRODUCTS_TMP/latest

  if [[ "$BUILD_TYPE" != nightly ]]; then
    echo "Promoting $f to $PRODUCTS_TMP"
    cp -a $f $PRODUCTS_TMP
  fi
done

cd $WORKSPACE
cp -a $PROPERTIES $PRODUCTS_TMP/latest/product.properties
cp -a $WORKSPACE/installer-products/repository $PRODUCTS_TMP/latest
$BASH $SCRIPTS/adjustArtifactRepository.sh \
  $PRODUCTS_TMP/latest/repository \
  $PRODUCTS/latest/repository \
  "Eclipse Installer $FOLDER" \
  $BUILD_TYPE
$BASH $SCRIPTS/adjustContentRepository.sh \
  $PRODUCTS_TMP/latest/repository \
  "Eclipse Installer $FOLDER"

if [[ "$BUILD_TYPE" != nightly ]]; then
  cp -a $PROPERTIES $PRODUCTS_TMP/product.properties
  cp -a $WORKSPACE/installer-products/repository $PRODUCTS_TMP
  $BASH $SCRIPTS/adjustArtifactRepository.sh \
    $PRODUCTS_TMP/repository \
    $PRODUCTS/repository \
    "Eclipse Installer $FOLDER" \
    $BUILD_TYPE
  $BASH $SCRIPTS/adjustContentRepository.sh \
    $PRODUCTS_TMP/repository \
    "Eclipse Installer $FOLDER"
else
  cp -a $PRODUCTS/product.properties $PRODUCTS_TMP
  for f in $PRODUCTS/*.zip; do
    if [[ -f $f ]]; then
      cp -a $f $PRODUCTS_TMP
    fi
  done
  cp -a $PRODUCTS/*.exe $PRODUCTS_TMP
  cp -a $PRODUCTS/*.tar.gz $PRODUCTS_TMP
  for f in $PRODUCTS/*.dmg; do
    if [[ -f $f ]]; then
      cp -a $f $PRODUCTS_TMP
    fi
  done
  cp -a $PRODUCTS/repository $PRODUCTS_TMP
fi

##################
# DOWNLOADS/HELP #
##################

echo "Promoting $WORKSPACE/help"
cd $WORKSPACE
rm -rf $HELP_TMP
mkdir $HELP_TMP
cp -a $WORKSPACE/help/* $HELP_TMP

#####################
# DOWNLOADS/UPDATES #
#####################

cd $WORKSPACE
rm -rf $UPDATES_TMP
cp -a $UPDATES $UPDATES_TMP

if [[ "$BUILD_TYPE" == release ]]; then
  echo "Releasing $DROP/products"
  mkdir $DROP/products
  cp -a $PRODUCTS_TMP/* $DROP/products
  $BASH $SCRIPTS/adjustArtifactRepository.sh \
    $DROP/products/repository \
    $DROP/products/repository \
    "Eclipse Installer $FOLDER" \
    $BUILD_TYPE
  $BASH $SCRIPTS/adjustContentRepository.sh \
    $DROP/products/repository \
    "Eclipse Installer $FOLDER"

  echo "Releasing $DROP/help"
  mkdir $DROP/help
  cp -a $HELP_TMP/* $DROP/help
fi

$BASH $SCRIPTS/composeRepositories.sh \
  "$DOWNLOADS" \
  "$BUILD_TYPE" \
  "$BUILD_KEY" \
  "$BUILD_LABEL"

mkdir -p $UPDATES_TMP/$BUILD_TYPE/latest
cp -a $DROP/org.eclipse.oomph.site.zip $UPDATES_TMP/$BUILD_TYPE/latest

mkdir -p $UPDATES_TMP/latest
cp -a $DROP/org.eclipse.oomph.site.zip $UPDATES_TMP/latest

rm -rf $UPDATES.bak
mv $UPDATES $UPDATES.bak; mv $UPDATES_TMP $UPDATES
rm -rf $UPDATES.bak

rm -rf $PRODUCTS.bak
mv $PRODUCTS $PRODUCTS.bak; mv $PRODUCTS_TMP $PRODUCTS
rm -rf $PRODUCTS.bak

rm -rf $HELP.bak
mv $HELP $HELP.bak; mv $HELP_TMP $HELP
rm -rf $HELP.bak

cd $WORKSPACE
for t in nightly milestone; do
  for f in $DROPS/$t/*; do
    if [[ -f $f/REMOVE ]]; then
      echo "Deleting $f"
      rm -rf $f
    fi
  done
done

echo ""
