Newer
Older
# Usage examples:
# first you need to source this script, so that you can use it's methods:
# $ source releaseSilecs.sh
#
# release a new version v1.0.0
# $ release 1.0.0 /common/usr/cscofe/silecs /home/bel/schwinn/lnx/workspace-silecs-mars
#
# patch 2 packages of an existing version 1.2.3
# $ patch silecs-codegen 1.2.4 1.2.3 /common/usr/cscofe/silecs /home/bel/schwinn/lnx/workspace-silecs-mars
# $ patch silecs-model 1.2.4 1.2.3 /common/usr/cscofe/silecs /home/bel/schwinn/lnx/workspace-silecs-mars
#
# release a new version of the silecs-eclipse plugin
# $ plugin_release /common/usr/cscofe/silecs /home/bel/schwinn/lnx/workspace-silecs-mars
# List of silecs packages which is released or patched
PACKAGES="silecs-codegen silecs-model silecs-communication-cpp silecs-diagnostic-cpp snap7"
# Check that folder exists, print proper error if not
checkFolderExists()
{
FOLDER=$1
if [ ! -d ${FOLDER} ]; then
echo "Error: The folder '${FOLDER}' is needed in order to finish the installation."
echo "Installation cancelled."
exit 1
fi
}
# releases all silecs-packages to release-dir
{
VERSION=$1
RELEASE_DIR_BASE=$2
WORKSPACE=$3
checkFolderExists ${WORKSPACE}
for PACKAGE in $PACKAGES; do
INSTALL_DIR=${RELEASE_DIR_BASE}/${PACKAGE}/${VERSION}
if [ -d ${INSTALL_DIR} ]; then
echo "Error: Silecs version ${VERSION} is already installed in ${INSTALL_DIR}. Exiting now."
return 1
else
checkFolderExists ${WORKSPACE}/${PACKAGE}
echo "installing ${INSTALL_DIR} from ${WORKSPACE}/${PACKAGE}"
${WORKSPACE}/${PACKAGE}/install.sh ${INSTALL_DIR}
fi
done
return 0
}
(
set -e
RELEASE_DIR_BASE=$1
WORKSPACE=$2
PACKAGE=silecs-eclipse-plugin-update-site
INSTALL_DIR=${RELEASE_DIR_BASE}/${PACKAGE}
checkFolderExists ${WORKSPACE}/${PACKAGE}
echo "installing ${INSTALL_DIR} from ${WORKSPACE}/${PACKAGE}"
${WORKSPACE}/${PACKAGE}/install.sh ${INSTALL_DIR}
return 0
)
}
# releases a specific package to release-dir. For all other packages symlinks to the base-version are generated
{
PACKAGE_TO_PATCH=$1
NEW_VERSION=$2
BASE_VERSION=$3
RELEASE_DIR_BASE=$4
WORKSPACE=$5
checkFolderExists ${WORKSPACE}
for PACKAGE in $PACKAGES; do
INSTALL_DIR=${RELEASE_DIR_BASE}/${PACKAGE}/${NEW_VERSION}
BASE_DIR=${RELEASE_DIR_BASE}/${PACKAGE}/${BASE_VERSION}
checkFolderExists ${BASE_DIR}
if [ "$PACKAGE" == "$PACKAGE_TO_PATCH" ]; then
if [ -d ${INSTALL_DIR} ]; then
if [ -L ${INSTALL_DIR} ]; then
checkFolderExists ${WORKSPACE}/${PACKAGE}
# Replace Sym-Link with patch-version ... needed if more than one package is patched for the same version
unlink ${INSTALL_DIR}
checkFolderExists ${WORKSPACE}/${PACKAGE}
${WORKSPACE}/${PACKAGE}/install.sh ${INSTALL_DIR}
else
echo "Error: Silecs version ${NEW_VERSION} of package ${PACKAGE} is already installed in ${INSTALL_DIR}. Exiting now."
return 1
fi
else
checkFolderExists ${WORKSPACE}/${PACKAGE}
echo "installing ${INSTALL_DIR} from ${WORKSPACE}/${PACKAGE}"
${WORKSPACE}/${PACKAGE}/install.sh ${INSTALL_DIR}
fi
else
if [ ! -d ${INSTALL_DIR} ]; then
# no patched version for this package available --> link to base-version
echo "Symbolic link to base version '${BASE_VERSION}' created for package '${PACKAGE}' of version '${NEW_VERSION}'"
ln -s ${BASE_VERSION} ${INSTALL_DIR}
fi
fi
done
return 0
}