11#! /usr/bin/env bash
2- # scripts/release/release.sh — bump version, update CHANGELOG, commit, and tag.
2+ # scripts/release/release.sh — bump version, sync fallback header,
3+ # update CHANGELOG, commit, and tag.
34#
45# Usage:
56# ./scripts/release/release.sh <new-version>
910# 1. Validates the supplied version string.
1011# 2. Ensures the working tree is clean and on `main`.
1112# 3. Updates the VERSION field in CMakeLists.txt.
12- # 4. Opens CHANGELOG.md in $EDITOR so you can fill in the release notes.
13- # 5. Commits the two changed files.
14- # 6. Creates an annotated tag.
15- # 7. Optionally pushes branch + tag to origin.
13+ # 4. Updates checked-in fallback version constants in version.hpp.
14+ # 5. Opens CHANGELOG.md in $EDITOR so you can fill in the release notes.
15+ # 6. Commits the changed files.
16+ # 7. Creates an annotated tag.
17+ # 8. Optionally pushes branch + tag to origin.
1618
1719set -euo pipefail
1820
@@ -36,6 +38,7 @@ NEW_VERSION="$1"
3638REPO_ROOT=" $( cd " $( dirname " $0 " ) /../.." && pwd) "
3739CMAKE_FILE=" $REPO_ROOT /CMakeLists.txt"
3840CHANGELOG=" $REPO_ROOT /CHANGELOG.md"
41+ VERSION_HEADER=" $REPO_ROOT /lib/include/ds_mysql/version.hpp"
3942
4043# ──────────────────────────────────────────────────────────────────────────────
4144# Git sanity checks
@@ -88,6 +91,31 @@ UPDATED_VERSION="$(grep -oP '(?<=VERSION )\d+\.\d+\.\d+' "$CMAKE_FILE" | head -1
8891[[ " $UPDATED_VERSION " == " $NEW_VERSION " ]] \
8992 || die " CMakeLists.txt update failed — expected $NEW_VERSION , got $UPDATED_VERSION "
9093
94+ # ──────────────────────────────────────────────────────────────────────────────
95+ # Sync fallback version in checked-in header
96+ # ──────────────────────────────────────────────────────────────────────────────
97+
98+ IFS=' .' read -r NEW_MAJOR NEW_MINOR NEW_PATCH <<< " $NEW_VERSION"
99+
100+ info " Updating fallback version header …"
101+ sed -Ei " s/(static constexpr std::uint32_t major = )[0-9]+;/\\ 1${NEW_MAJOR} ;/" \
102+ " $VERSION_HEADER "
103+ sed -Ei " s/(static constexpr std::uint32_t minor = )[0-9]+;/\\ 1${NEW_MINOR} ;/" \
104+ " $VERSION_HEADER "
105+ sed -Ei " s/(static constexpr std::uint32_t patch = )[0-9]+;/\\ 1${NEW_PATCH} ;/" \
106+ " $VERSION_HEADER "
107+ sed -Ei " s|(static constexpr std::string_view string = )\" [^\" ]+\" ;|\\ 1\" ${NEW_VERSION} \" ;|" \
108+ " $VERSION_HEADER "
109+
110+ grep -q " static constexpr std::uint32_t major = ${NEW_MAJOR} ;" " $VERSION_HEADER " \
111+ || die " Failed to update major in version.hpp"
112+ grep -q " static constexpr std::uint32_t minor = ${NEW_MINOR} ;" " $VERSION_HEADER " \
113+ || die " Failed to update minor in version.hpp"
114+ grep -q " static constexpr std::uint32_t patch = ${NEW_PATCH} ;" " $VERSION_HEADER " \
115+ || die " Failed to update patch in version.hpp"
116+ grep -q " static constexpr std::string_view string = \" ${NEW_VERSION} \" ;" " $VERSION_HEADER " \
117+ || die " Failed to update string in version.hpp"
118+
91119# ──────────────────────────────────────────────────────────────────────────────
92120# Update CHANGELOG.md
93121# ──────────────────────────────────────────────────────────────────────────────
@@ -125,7 +153,7 @@ info "Opening CHANGELOG.md in ${EDITOR} …"
125153# ──────────────────────────────────────────────────────────────────────────────
126154
127155info " Staging changed files …"
128- git add " $CMAKE_FILE " " $CHANGELOG "
156+ git add " $CMAKE_FILE " " $VERSION_HEADER " " $ CHANGELOG"
129157
130158git diff --cached --stat
131159
0 commit comments