#!/bin/bash -xv
#
#    Promote the PUBLISH__BUILD to an updates repository.
#
#    PUBLISH__BUILD_TYPE     Build type N/I/S/R, blank suppresses promotion
#    PUBLISH__BUILD          The base URL of the build to be published, e.g., https://ci.eclipse.org/uml2/job/mdt-uml2-master/lastSuccessfulBuild
#    PUBLISH__VERSION        Unqualified version, e.g., 5.4.0
#    PUBLISH__QUALIFIER      Build qualifier, e.g., I20171228-2349
#
updatesFolder="/home/data/httpd/download.eclipse.org/modeling/mdt/uml2/updates/"
group="modeling.mdt.uml2"
localZip="uml2.zip"
projectRepoName="Unified Modeling Language 2.x (UML2)"
manageComposite="/shared/common/apache-ant-latest/bin/ant -f /shared/modeling/tools/promotion/manage-composite.xml"

if [ -n "${PUBLISH__BUILD_TYPE}" ]
then

  if [ "${PUBLISH__BUILD_TYPE}" = "N" ]
  then
    repoFolder="${updatesFolder}${PUBLISH__VERSION:0:2}-N-builds"
    repoName="Nightly Build"
  elif [ "${PUBLISH__BUILD_TYPE}" = "I" ]
  then
    repoFolder="${updatesFolder}${PUBLISH__VERSION:0:3}-I-builds"
    repoName="Integration Build"
  elif [ "${PUBLISH__BUILD_TYPE}" = "S" ]
  then
    repoFolder="${updatesFolder}${PUBLISH__VERSION:0:3}milestones"
    repoName="Milestone"
  elif [ "${PUBLISH__BUILD_TYPE}" = "R" ]
  then
    repoFolder="${updatesFolder}${PUBLISH__VERSION:0:3}"
    repoName="Release"
  else
    repoFolder="${updatesFolder}${PUBLISH__VERSION:0:3}-other"
    repoName="Other"
  fi

  if [ ! -d "${repoFolder}" ]
  then
    mkdir -p ${repoFolder}
  fi

  pushd ${repoFolder}

    buildFolder="${PUBLISH__BUILD_TYPE}${PUBLISH__QUALIFIER:1:8}${PUBLISH__QUALIFIER:10:4}"

    if [ ! -d "${buildFolder}" ]
    then
      mkdir ${buildFolder}
    fi

    curl -s -k ${PUBLISH__BUILD}/artifact/releng/org.eclipse.uml2.build-feature/target/org.eclipse.uml2-${PUBLISH__VERSION}.${PUBLISH__QUALIFIER}.zip > ${localZip}
    unzip ${localZip} -d ${buildFolder}
    rm ${localZip}

    chgrp -R ${group} ${buildFolder}
    chmod -R g+w ${buildFolder}
    ${manageComposite} add -Dchild.repository=${buildFolder} -Dcomposite.name="${projectRepoName} ${PUBLISH__VERSION} ${repoName} Site"

  popd

fi