blob: 9abc841eeb43ff0e3cce7d88182d417ac151a862 [file] [log] [blame]
#!/bin/sh
# ====================================================================
# Copyright (c) 2014 Obeo
# 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:
# Obeo - initial API and implementation
# ====================================================================
if [ $# -lt 1 ]; then
echo "Execution aborted. One or more of the required parameters is not set.
Usage: $0 unqualifiedVersion [nbBuildToKeep]
- unqualifiedVersion: the unqualified version of the update sites to clean.
- nbBuildToKeep: the number of build to keep. 0 to remove all streams related to the unqualifiedVersion
"
exit 1
fi
unqualifiedVersion="${1}"
nbBuildToKeep="${2:-5}"
source "$(dirname "${0}")/init.sh"
currentPwd=$(pwd)
LSDEBUG "unqualifiedVersion is '${unqualifiedVersion}'"
minorVersion="$(echo ${unqualifiedVersion} | sed-regex 's/^([0-9]+\.[0-9]+)\.[0-9]+$/\1/')"
LSDEBUG "Minor stream name is '${minorVersion}.x'"
majorVersion="$(echo ${unqualifiedVersion} | sed-regex 's/^([0-9]+)\.[0-9]+\.[0-9]+$/\1/')"
LSDEBUG "Major stream name is '${majorVersion}.x'"
LSINFO "== Clean up '${unqualifiedVersion}' nightly builds (will keep the ${nbBuildToKeep} most recent) =="
cd "${UPDATE_NIGHTLY_HOME}"
foldersWithUnqualifiedVersionPrefix=( "${unqualifiedVersion}"* )
cd "${currentPwd}"
if [ ${#foldersWithUnqualifiedVersionPrefix[@]} -eq 0 ]; then
LSINFO "No build '${unqualifiedVersion}' found in '${UPDATE_NIGHTLY_HOME}, nothing to clean'"
exit 0
fi
if [ ${nbBuildToKeep} -gt 0 ]; then
updateSiteToKeep=( $(echo ${foldersWithUnqualifiedVersionPrefix[@]} | tr ' ' '\n' | sort -r | head -n ${nbBuildToKeep}) )
UNION=( ${updateSiteToKeep[@]} ${foldersWithUnqualifiedVersionPrefix[@]} )
updateSitesToClean=( $(echo ${UNION[@]} | tr ' ' '\n' | sort | uniq -u) )
else
updateSitesToClean=( $(echo ${foldersWithUnqualifiedVersionPrefix[@]} | tr ' ' '\n' | sort) )
fi
if [ ${#updateSitesToClean[@]} -eq 0 ]; then
LSINFO "There are ${#foldersWithUnqualifiedVersionPrefix[@]} '${unqualifiedVersion}' builds, nothing to clean as we are keeping the ${nbBuildToKeep} most recent builds."
else
for updateSiteToClean in ${updateSitesToClean[@]}; do
cleanNightly ${updateSiteToClean} "${UPDATE_NIGHTLY_HOME}/streams/${unqualifiedVersion}.x" "${UPDATE_NIGHTLY_HOME}/streams/${unqualifiedVersion}.x/latest"
cleanNightly ${updateSiteToClean} "${UPDATE_NIGHTLY_HOME}/streams/${minorVersion}.x" "${UPDATE_NIGHTLY_HOME}/streams/${minorVersion}.x/latest"
cleanNightly ${updateSiteToClean} "${UPDATE_NIGHTLY_HOME}/streams/${majorVersion}.x" "${UPDATE_NIGHTLY_HOME}/streams/${majorVersion}.x/latest"
cleanNightly ${updateSiteToClean} "${UPDATE_NIGHTLY_HOME}" "${UPDATE_NIGHTLY_HOME}/latest"
LSINFO "Removing folder '${UPDATE_NIGHTLY_HOME}/${updateSiteToClean}'"
rm -rf "${UPDATE_NIGHTLY_HOME}/${updateSiteToClean}"
done
updateLatest "${UPDATE_NIGHTLY_HOME}/streams/${unqualifiedVersion}.x/latest" "${UPDATE_NIGHTLY_HOME}" "${unqualifiedVersion}" "${PROJECT_NAME} ${unqualifiedVersion}.x latest nightly build"
updateLatest "${UPDATE_NIGHTLY_HOME}/streams/${minorVersion}.x/latest" "${UPDATE_NIGHTLY_HOME}" "${minorVersion}" "${PROJECT_NAME} ${minorVersion}.x latest nightly build"
updateLatest "${UPDATE_NIGHTLY_HOME}/streams/${majorVersion}.x/latest" "${UPDATE_NIGHTLY_HOME}" "${majorVersion}" "${PROJECT_NAME} ${majorVersion}.x latest nightly build"
updateLatest "${UPDATE_NIGHTLY_HOME}/latest" "${UPDATE_NIGHTLY_HOME}" "" "${PROJECT_NAME} latest nightly build"
fi