#!/bin/sh # Bump one platform's semantic version in versions.mk. # bump.sh # Bumping android also increments its monotonic versionCode. set -eu platform=${1:-} part=${2:-patch} root=$(cd "$(dirname "$0")/.." && pwd) file=$root/versions.mk case $platform in server|linux|macos|windows|bsd|android|all) ;; *) echo "usage: make bump PLATFORM= PART=" >&2 exit 2 ;; esac case $part in major|minor|patch) ;; *) echo "bump.sh: PART must be major, minor or patch" >&2 exit 2 ;; esac bump_one() { key=VERSION_$(echo "$1" | tr 'a-z' 'A-Z') current=$(sed -n "s/^$key[[:space:]]*:=[[:space:]]*\([0-9.]*\).*/\1/p" "$file") [ -n "$current" ] || { echo "bump.sh: $key not found in versions.mk" >&2; exit 1; } major=$(echo "$current" | cut -d. -f1) minor=$(echo "$current" | cut -d. -f2) patch=$(echo "$current" | cut -d. -f3) case $part in major) major=$((major + 1)); minor=0; patch=0 ;; minor) minor=$((minor + 1)); patch=0 ;; patch) patch=$((patch + 1)) ;; esac next=$major.$minor.$patch sed -i.bak "s/^$key[[:space:]]*:=.*/$(printf '%-16s := %s' "$key" "$next")/" "$file" printf '%s %s -> %s\n' "$1" "$current" "$next" if [ "$1" = android ]; then code=$(sed -n 's/^ANDROID_VERSION_CODE[[:space:]]*:=[[:space:]]*\([0-9]*\).*/\1/p' "$file") sed -i.bak "s/^ANDROID_VERSION_CODE[[:space:]]*:=.*/ANDROID_VERSION_CODE := $((code + 1))/" "$file" printf 'android versionCode %s -> %s\n' "$code" "$((code + 1))" fi } if [ "$platform" = all ]; then for p in server linux macos windows bsd android; do bump_one "$p"; done else bump_one "$platform" fi rm -f "$file.bak"