blob: b56f811f5b5d135ffba94b7c0be73fb1325c3d48 [file] [log] [blame]
#!/bin/bash
# changes the BROOKLYN version everywhere
# usage, e.g.: change-version.sh 0.3.0-SNAPSHOT 0.3.0-RC1
[ -d .git ] || {
echo "Must run in brooklyn project root directory"
exit 1
}
[[ -z "$3" && ! -z "$2" ]] || {
echo "Usage: "$0" CURRENT_VERSION NEW_VERSION"
echo " e.g.: "$0" 0.3.0-SNAPSHOT 0.3.0-RC1"
exit 1
}
# remove binaries and stuff
if [[ -f pom.xml ]] ; then mvn clean ; fi
LABEL1=BROOKLYN_VERSION
LABEL2=BROOKLYN_VERSION_BELOW
CURRENT_VERSION=$1
NEW_VERSION=$2
GREP_ARGS="-r -l --exclude_dir=\\..* --exclude=.*.(log|war)"
# look for lines (where we can put the literal $LABEL1 in an inline comment) matching
# ... ${CURRENT_VERSION} ... BROOKLYN_VERSION
FILES1=`pcregrep $GREP_ARGS "${CURRENT_VERSION}.*${LABEL1}" .`
for x in $FILES1 ; do
sed -i .bak "s/${CURRENT_VERSION}\(.*\)${LABEL1}/${NEW_VERSION}\1${LABEL1}/" $x
done
echo "One-line pattern changed these files: $FILES1"
# or two-lines for situations where comments must be entire-line (e.g. scripts)
# put the comment on the line before the version
# using sed as per http://blog.ergatides.com/2012/01/24/using-sed-to-search-and-replace-contents-of-next-line-in-a-file/
# to match:
# ... BROOKLYN_VERSION_BELOW ...
# ... ${CURRENT_VERSION} ...
FILES2=`pcregrep $GREP_ARGS -M "${LABEL2}.*\n.*${CURRENT_VERSION}" .`
for x in $FILES2 ; do
sed -i .bak -e '/'"${LABEL2}"'/{n;s/'"${CURRENT_VERSION}"'/'"${NEW_VERSION}"'/g;}' $x
done
echo "Two-line pattern changed these files: $FILES2"
echo "Changed ${CURRENT_VERSION} to ${NEW_VERSION} for "`echo $FILES1 $FILES2 | wc | awk '{print $2}'`" files"
echo "(Do a \`find . -name \"*.bak\" -delete\` to delete the backup files.)"