#!/bin/bash

# this script can be used to change the version recursively throughout the project
# Initial version from lhein, 2014

# check parameter count and provide help if count doesn't match
if [ "$#" -ne 2 ]; then
    echo "Illegal number of parameters"
    echo "Please specify the old and the new version like this:"
    echo "	changeVersion.sh <oldVersionString> <newVersionString>"
    echo "Example:"
    echo "	changeVersion.sh 7.2.0-SNAPSHOT 7.2.0"
    exit 0
fi

CMD_1=$1
CMD_2=$2

# cut away the snapshot from the source version
if [[ ${CMD_1} == *-SNAPSHOT ]]
then
  SOURCE_VERSION=`echo $CMD_1| cut -d'-' -f 1`
  SOURCE_VERSION_PATTERN_MVN="${SOURCE_VERSION}-SNAPSHOT"
  SOURCE_VERSION_PATTERN_OSGI="${SOURCE_VERSION}.qualifier"
else
  SOURCE_VERSION=${CMD_1}
  SOURCE_VERSION_PATTERN_MVN="${SOURCE_VERSION}"
  SOURCE_VERSION_PATTERN_OSGI="${SOURCE_VERSION}.qualifier"
fi

# cut away the snapshot from the target version
if [[ ${CMD_2} == *-SNAPSHOT ]]
then
  TARGET_VERSION=`echo $CMD_2| cut -d'-' -f 1`
  MVN_TARGET_VERSION=$CMD_2
  OSGI_TARGET_VERSION="$TARGET_VERSION.qualifier"
else
  TARGET_VERSION="${CMD_2}"
  MVN_TARGET_VERSION=$CMD_2
  OSGI_TARGET_VERSION="${TARGET_VERSION}.qualifier"
fi

echo "Using the following settings:"
echo "	Source Version:		$CMD_1"
echo "	Target Version Maven:	$MVN_TARGET_VERSION"
echo "	Target Version OSGi:	$OSGI_TARGET_VERSION"
echo "	Maven Replace Pattern:	$SOURCE_VERSION_PATTERN_MVN"
echo "	OSGi Replace Pattern:	$SOURCE_VERSION_PATTERN_OSGI"
echo "Replacing now..."

###################
## REPLACE LOGIC ##
###################

# replace regular maven versions
find * -name 'pom.xml' | xargs perl -pi -e "s/<version>$SOURCE_VERSION_PATTERN_MVN<\/version>/<version>$MVN_TARGET_VERSION<\/version>/g"

# replace OSGi versions
find * -name 'pom.xml' | xargs perl -pi -e "s/<version>$SOURCE_VERSION_PATTERN_OSGI<\/version>/<version>$OSGI_TARGET_VERSION<\/version>/g"

# replace manifest versions
find * -name 'MANIFEST.MF' | xargs perl -pi -e "s/$SOURCE_VERSION_PATTERN_OSGI/$OSGI_TARGET_VERSION/g"

# feature.xml files
find * -name 'feature.xml' | xargs perl -pi -e "s/$SOURCE_VERSION_PATTERN_OSGI/$OSGI_TARGET_VERSION/g"

echo "DONE!"

