joal/publish.sh
2022-08-01 22:56:13 +02:00

48 lines
1.5 KiB
Bash

#!/usr/bin/env bash
is_snapshot() {
[[ "$1" == *"-SNAPSHOT" ]]
}
remove_snapshot_safe() {
local version="$1"
echo "$version" | sed s/-SNAPSHOT//
}
increment_version() {
local version=$1
local rgx='^((?:[0-9]+\.)*)([0-9]+)($)'
val=`echo -e "$version" | perl -pe 's/^.*'$rgx'.*$/$2/'`
echo "$version" | perl -pe s/$rgx.*$'/${1}'`printf %0${#val}s $(($val+1))`/
}
current_version=$(mvn org.apache.maven.plugins:maven-help-plugin:3.1.0:evaluate -Dexpression=project.version -q -DforceStdout)
echo "Current Version is $current_version"
release_version="$current_version"
if is_snapshot ${current_version}; then
release_version=$(remove_snapshot_safe "$release_version")
else
release_version=$(increment_version "$release_version")
fi
read -e -p "Enter release version [$release_version]:" user_input_release_version
release_version="${user_input_release_version:-$release_version}"
# Prevent fail when wildcard matches nothing
shopt -s nullglob
# Update version in all pom.xml
mvn versions:set -DnewVersion="$release_version" -DprocessAllModules=true -DgenerateBackupPoms=false
# create a commit that will hold the tag
git add pom.xml ./*/pom.xml && git commit -m "Prepare release $release_version" && git push origin master
# Tag and push the tag
git tag "$release_version"
git push --tags origin
# prepare next iteration and push
mvn versions:set -DnextSnapshot=true -DprocessAllModules=true -DgenerateBackupPoms=false
git add pom.xml ./*/pom.xml && git commit -m "Prepare next iteration" && git push origin master
shopt -u nullglob