#!/bin/bash set -e #fail fast #H Usage: #H change_version.sh -h | change_version.sh --help #H #H prints this help and exits #H #H change_version.sh <-m modules...> [-i] #H #H if a release version exists (extracted from TRAVIS_TAG) #H the maven versions of all modules will be changed to the given release version. #H #H module: #H directory of a maven project #H i: #H increments version #H #H Environment variables: #H - TRAVIS_TAG #H if this is a tagged build then TRAVIS_TAG contains the version number. #H pattern: v[DIGIT].[DIGIT].[DIGIT] # Arguments: # $1: exitcode function helpAndExit { cat "$0" | grep "^#H" | cut -c4- exit "$1" } # takes a version (without leading v) and increments its # last number by one. # Arguments: # $1: version (without leading v) which will be patched # Return: # version with last number incremented function increment_version() { if [[ ! "$1" =~ [0-9]+\.[0-9]+\.[0-9]+ ]]; then echo "'$1' does not match tag pattern." >&2 exit 1; fi echo "${1%\.*}.`expr ${1##*\.*\.} + 1`" } # changing version in pom and all its children # Arguments: # $1: directory of pom # $2: new version function change_version { mvn versions:set -f "$1" -DnewVersion="$2" -DartifactId=* -DgroupId=* versions:commit } function main { [[ $# -eq 0 || "$1" == '-h' || "$1" == '--help' ]] && helpAndExit 0 while [[ $# -gt 0 ]]; do case $1 in -i) INCREMENT="true" shift # past argument ;; -m|--modules) if [[ -z "$2" || "$2" == -* ]]; then echo "missing parameter for argument '-m|--modules'" >&2 exit 1 fi MODULES=($2) shift # past argument shift # past value ;; -swarm) if [[ -z "$2" || "$2" == -* ]]; then echo "missing parameter for argument '-swarm'" >&2 exit 1 fi SWARM="$2" shift # past argument shift # past value ;; *) # unknown option echo "unknown parameter $1" >&2 exit 1 ;; esac done if [[ ${#MODULES[@]} -eq 0 ]]; then echo "Can not perform deployment without any modules" >&2 helpAndExit 1 fi if [[ "$TRAVIS_TAG" =~ ^v[0-9]+\.[0-9]+\.[0-9]+$ ]]; then version=`[[ -n "$INCREMENT" ]] && echo $(increment_version "${TRAVIS_TAG##v}")-SNAPSHOT || echo "${TRAVIS_TAG##v}"` for dir in ${MODULES[@]}; do change_version "$dir" "$version" done if [[ -n "$SWARM" ]]; then sed -i "s/pro.taskana:taskana-core.*-SNAPSHOT/pro.taskana:taskana-core:$version/" "$SWARM" fi else echo "skipped version change because this is not a release build" fi } main "$@"