Files
sendico/ci/scripts/common/bump_version.sh
2026-03-16 14:33:56 +01:00

90 lines
2.2 KiB
Bash
Executable File

#!/usr/bin/env bash
set -euo pipefail
REPO_ROOT="$(cd "$(dirname "$0")/../../.." && pwd)"
cd "${REPO_ROOT}"
VERSION_FILE="./version"
PUBSPEC_FILE="./frontend/pweb/pubspec.yaml"
if [[ ! -f "${PUBSPEC_FILE}" && -f "./frontend/pweb/pubspec.yml" ]]; then
PUBSPEC_FILE="./frontend/pweb/pubspec.yml"
fi
if [[ ! -f "${VERSION_FILE}" ]]; then
echo "[bump-version] missing ${VERSION_FILE}" >&2
exit 1
fi
if [[ ! -f "${PUBSPEC_FILE}" ]]; then
echo "[bump-version] missing frontend pubspec file" >&2
exit 1
fi
current_version="$(tr -d '[:space:]' < "${VERSION_FILE}")"
if [[ -z "${current_version}" ]]; then
echo "[bump-version] ${VERSION_FILE} is empty" >&2
exit 1
fi
new_version="$(printf '%s\n' "${current_version}" | awk -F. -v OFS=. '
NF == 1 { print ++$NF; next }
{ $NF = sprintf("%0*d", length($NF), ($NF + 1)); print }
')"
current_pubspec_version="$(
awk '/^version:[[:space:]]*/ {
sub(/^version:[[:space:]]*/, "", $0)
print
exit
}' "${PUBSPEC_FILE}"
)"
if [[ -z "${current_pubspec_version}" ]]; then
echo "[bump-version] could not find version line in ${PUBSPEC_FILE}" >&2
exit 1
fi
build_number=0
if [[ "${current_pubspec_version}" == *+* ]]; then
build_number="${current_pubspec_version##*+}"
fi
if [[ ! "${build_number}" =~ ^[0-9]+$ ]]; then
echo "[bump-version] invalid build number in ${PUBSPEC_FILE}: ${current_pubspec_version}" >&2
exit 1
fi
next_build_number=$((build_number + 1))
version_tmp="${VERSION_FILE}.tmp.$$"
pubspec_tmp="${PUBSPEC_FILE}.tmp.$$"
cleanup() {
rm -f "${version_tmp}" "${pubspec_tmp}"
}
trap cleanup EXIT INT TERM
printf '%s\n' "${new_version}" > "${version_tmp}"
awk -v version="${new_version}" -v build="${next_build_number}" '
BEGIN { updated = 0 }
/^version:[[:space:]]*/ && !updated {
print "version: " version "+" build
updated = 1
next
}
{ print }
END {
if (!updated) {
exit 1
}
}
' "${PUBSPEC_FILE}" > "${pubspec_tmp}"
mv "${version_tmp}" "${VERSION_FILE}"
mv "${pubspec_tmp}" "${PUBSPEC_FILE}"
echo "===================================="
echo "Release version bumped"
echo "===================================="
echo "version: ${current_version} -> ${new_version}"
echo "${PUBSPEC_FILE}: ${current_pubspec_version} -> ${new_version}+${next_build_number}"