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

TMP_DIR=/tmp

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

version=$1

FEATURES="\
	org.eclipse.ptp-feature \
	org.eclipse.ptp.core-feature \
	org.eclipse.ptp.external-feature \
	org.eclipse.ptp.master \
	org.eclipse.ptp.perf-feature \
	org.eclipse.ptp.perf.tau-feature \
	org.eclipse.ptp.perf.tau.fortran-feature \
	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.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.sdm-feature \
	org.eclipse.ptp.services-feature \
	org.eclipse.ptp.utils-feature"
	
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"
	
C_PROJECTS="\
	org.eclipse.ptp.debug.sdm \
	org.eclipse.ptp.proxy \
	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
}

update_configure() {
	sed -e "s/AC_INIT(\([^,]*\), *[0-9]\.[0-9]\.[0-9])/AC_INIT(\1, $2)/" < $1/configure.in > $TMP_DIR/${1}_configure.in
	mv $TMP_DIR/${1}_configure.in $1/configure.in
	(cd $1; autoconf)
}

for feature in $FEATURES; do
	echo "Updating $feature..."
	update_feature $feature $version
done

for plugin in $PLUGINS; do
	echo "Updating $plugin..."
	update_manifest $plugin $version
done

for project in $C_PROJECTS; do
	echo "Updating $project..."
	update_manifest $project $version
	update_configure $project $version
done

echo "Updating org.eclipse.ptp.releng..."
sed -e "s/<property name=\"branchVersion\" value=\"[0-9]\.[0-9]\.[0-9]\"\/>/<property name=\"branchVersion\" value=\"$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=\"ptpVersion\" value=\"[0-9]\.[0-9]\.[0-9]\"\/>/<property name=\"ptpVersion\" value=\"$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
