#!/bin/sh
#
# script to update PTP versions
#
# Usage: update_versions ptp_version photran_version
#
# ptp_version - new version string for PTP (e.g. "3.0.1")
# photran_version - new version string for Photran (e.g. "5.0.1")
#
# Note: a "qualifier" suffix will automatically be added to the version where appropriate
#

TMP_DIR=/tmp

if [ $# -lt 2 ]; then
	echo "usage: update_versions ptp_version photran_version"
	exit 1
fi

ptp_version=$1
photran_version=$2

PTP_FEATURES="\
	org.eclipse.ptp-feature \
	org.eclipse.ptp.core-feature \
	org.eclipse.ptp.etfw-feature \
	org.eclipse.ptp.etfw.ppw-feature \
	org.eclipse.ptp.etfw.tau-feature \
	org.eclipse.ptp.etfw.tau.fortran-feature \
	org.eclipse.ptp.external-feature \
	org.eclipse.ptp.gem-feature \
	org.eclipse.ptp.master \
	org.eclipse.ptp.pldt-feature \
	org.eclipse.ptp.pldt.lapi-feature \
	org.eclipse.ptp.pldt.upc-feature \
	org.eclipse.ptp.rdt-feature \
	org.eclipse.ptp.rdt.remotejars-feature \
	org.eclipse.ptp.rdt.remotetools-feature \
	org.eclipse.ptp.rdt.xlc-feature \
	org.eclipse.ptp.remote-feature \
	org.eclipse.ptp.remote.remotetools-feature \
	org.eclipse.ptp.remote.rse-feature \
	org.eclipse.ptp.remotetools-feature \
	org.eclipse.ptp.rm.ibm.ll-feature \
	org.eclipse.ptp.rm.ibm.pe-feature \
	org.eclipse.ptp.rm.mpich2-feature \
	org.eclipse.ptp.rm.openmpi-feature \
	org.eclipse.ptp.rm.pbs-feature \
	org.eclipse.ptp.rm.slurm-feature \
	org.eclipse.ptp.sci-feature \
	org.eclipse.ptp.sdm-feature \
	org.eclipse.ptp.services-feature \
	org.eclipse.ptp.utils-feature"
	
PHOTRAN_FEATURES="\
	org.eclipse.photran-feature \
	org.eclipse.photran.intel-feature \
	org.eclipse.photran.xlf-feature \
	org.eclipse.rephraserengine-feature"

PTP_PLUGINS="\
	org.eclipse.ptp.aix.ppc \
	org.eclipse.ptp.linux.ppc \
	org.eclipse.ptp.linux.x86 \
	org.eclipse.ptp.linux.x86_64 \
	org.eclipse.ptp.macosx.ppc \
	org.eclipse.ptp.macosx.x86 \
	org.eclipse.ptp"
	
PTP_C_PROJECTS="\
	org.eclipse.ptp.debug.sdm \
	org.eclipse.ptp.proxy \
	org.eclipse.ptp.rm.ibm.pe.proxy \
	org.eclipse.ptp.rm.ibm.ll.proxy \
	org.eclipse.ptp.rm.slurm.proxy \
	org.eclipse.ptp.sci \
	org.eclipse.ptp.utils"
	
update_feature() {
	sed -e "s/version=\"[0-9]\.[0-9]\.[0-9]\.qualifier\"/version=\"$2\.qualifier\"/" < $1/feature.xml > $TMP_DIR/${1}_feature.xml
	mv $TMP_DIR/${1}_feature.xml $1/feature.xml
}

update_manifest() {
	sed -e "s/Bundle-Version: *[0-9]\.[0-9]\.[0-9]\.qualifier/Bundle-Version: $2.qualifier/" < $1/META-INF/MANIFEST.MF > $TMP_DIR/${1}_MANIFEST.MF
	mv $TMP_DIR/${1}_MANIFEST.MF $1/META-INF/MANIFEST.MF
}

for feature in $PTP_FEATURES; do
	echo "Updating $feature..."
	update_feature $feature $ptp_version
done

for plugin in $PTP_PLUGINS; do
	echo "Updating $plugin..."
	update_manifest $plugin $ptp_version
done

for project in $PTP_C_PROJECTS; do
	echo "Updating $project..."
	update_manifest $project $ptp_version
done

for feature in $PHOTRAN_FEATURES; do
	echo "Updating $feature..."
	update_feature $feature $photran_version
done

echo "Updating org.eclipse.ptp.releng..."
sed -e "s/<property name=\"ptpBranchVersion\" value=\"[0-9]\.[0-9]\.[0-9]\"\/>/<property name=\"ptpBranchVersion\" value=\"$ptp_version\"\/>/" \
	-e "s/<property name=\"photranBranchVersion\" value=\"[0-9]\.[0-9]\.[0-9]\"\/>/<property name=\"photranBranchVersion\" value=\"$photran_version\"\/>/" \
	< org.eclipse.ptp.releng/build.xml > $TMP_DIR/org.eclipse.ptp.releng_build.xml
mv $TMP_DIR/org.eclipse.ptp.releng_build.xml org.eclipse.ptp.releng/build.xml

echo "Updating org.eclipse.ptp.rdt.core.remotejars.."
sed -e "s/<property name=\"serverVersion\" value=\"[0-9]\.[0-9]\.[0-9]\"\/>/<property name=\"serverVersion\" value=\"$ptp_version\"\/>/" \
	< org.eclipse.ptp.rdt.core.remotejars/build.xml > $TMP_DIR/org.eclipse.ptp.rdt.core.remotejars_build.xml
mv $TMP_DIR/org.eclipse.ptp.rdt.core.remotejars_build.xml org.eclipse.ptp.rdt.core.remotejars/build.xml

exit 0
