Skip to content

Commit 959c245

Browse files
committed
Automatically Bump Version
1 parent b394d27 commit 959c245

1 file changed

Lines changed: 31 additions & 9 deletions

File tree

release.sh

Lines changed: 31 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2,29 +2,51 @@
22

33
set -euo pipefail
44

5-
if [ $# -ne 2 ]; then
6-
echo "Usage: $0 <api|verifier> <version>"
5+
if [ $# -lt 1 ] || [ $# -gt 2 ]; then
6+
echo "Usage: $0 <api|verifier> [version]"
77
exit 1
88
fi
99

1010
MODULE=$1
11-
VERSION=$2
11+
VERSION=${2:-}
1212

1313
if [ "$MODULE" != "api" ] && [ "$MODULE" != "verifier" ]; then
1414
echo "Invalid module: $MODULE"
15-
echo "Usage: $0 <api|verifier> <version>"
15+
echo "Usage: $0 <api|verifier> [version]"
1616
exit 1
1717
fi
1818

19+
MODULE_DIR="liquidjava-$MODULE"
20+
POM="$MODULE_DIR/pom.xml"
21+
22+
if [ -z "$VERSION" ]; then
23+
CURRENT_VERSION=$(perl -0ne "print \$1 if m#<artifactId>\\Q$MODULE_DIR\\E</artifactId>\\s*<version>([^<]+)</version>#" "$POM")
24+
25+
if [ -z "$CURRENT_VERSION" ]; then
26+
echo "Could not read current version from $POM"
27+
exit 1
28+
fi
29+
30+
if ! [[ "$CURRENT_VERSION" =~ ^[0-9]+(\.[0-9]+){1,2}$ ]]; then
31+
echo "Cannot automatically bump non-numeric version: $CURRENT_VERSION"
32+
echo "Pass the release version explicitly."
33+
exit 1
34+
fi
35+
36+
IFS=. read -ra VERSION_PARTS <<<"$CURRENT_VERSION"
37+
LAST_INDEX=$((${#VERSION_PARTS[@]} - 1))
38+
VERSION_PARTS[$LAST_INDEX]=$((${VERSION_PARTS[$LAST_INDEX]} + 1))
39+
VERSION=$(IFS=.; echo "${VERSION_PARTS[*]}")
40+
41+
echo "Bumping $MODULE_DIR from $CURRENT_VERSION to $VERSION"
42+
fi
43+
1944
if ! [[ "$VERSION" =~ ^[0-9]+(\.[0-9]+){1,2}(-[A-Za-z0-9.-]+)?$ ]]; then
2045
echo "Invalid version: $VERSION"
2146
echo "Expected format: 1.2.3"
2247
exit 1
2348
fi
2449

25-
MODULE_DIR="liquidjava-$MODULE"
26-
POM="$MODULE_DIR/pom.xml"
27-
2850
if [ "$MODULE" = "api" ]; then
2951
TAG="api-v$VERSION"
3052
else
@@ -48,15 +70,15 @@ if git rev-parse "$TAG" >/dev/null 2>&1; then
4870
exit 1
4971
fi
5072

73+
./mvnw -f "$POM" -B --fail-fast -Dgpg.skip=true -Dmaven.deploy.skip=true clean verify
74+
5175
perl -0pi -e "s#(<artifactId>$MODULE_DIR</artifactId>\\s*<version>)[^<]+(</version>)#\${1}$VERSION\${2}#" "$POM"
5276

5377
if git diff --quiet -- "$POM"; then
5478
echo "$POM is already at version $VERSION"
5579
exit 1
5680
fi
5781

58-
./mvnw -f "$POM" -B --fail-fast -Dgpg.skip=true -Dmaven.deploy.skip=true clean verify
59-
6082
git add "$POM"
6183
git commit -m "Release $MODULE_DIR $VERSION"
6284
git tag "$TAG"

0 commit comments

Comments
 (0)