Add workflow for version bumping
diff --git a/.github/workflows/version-bump b/.github/workflows/version-bump
new file mode 100644
index 0000000..b60c7b9
--- /dev/null
+++ b/.github/workflows/version-bump
@@ -0,0 +1,60 @@
+name: "Bump Project Version"
+
+on:
+ workflow_dispatch:
+ inputs:
+ version_base:
+ description: 'Target Version (e.g., 1.9.7)'
+ required: true
+ default: '1.9.7'
+
+jobs:
+ bump-version:
+ runs-on: ubuntu-latest
+ permissions:
+ contents: write
+ steps:
+ - name: Checkout code
+ uses: actions/checkout@v4
+
+ - name: Construct Version String
+ id: get_ver
+ run: |
+ BASE="${{ github.event.inputs.version_base }}"
+ RUN_NUM="${{ github.run_number }}"
+ FULL_VER="$BASE.$RUN_NUM"
+
+ echo "full_version=$FULL_VER" >> $GITHUB_OUTPUT
+ echo "base_version=$BASE" >> $GITHUB_OUTPUT
+
+ - name: Update Project Files
+ run: |
+ VER="${{ steps.get_ver.outputs.full_version }}"
+ echo "Bumping all files to $VER"
+
+ # 1. CMakeLists.txt (Matches 'VERSION X.Y.Z.W' or 'X.Y.Z')
+ sed -i "s/VERSION [0-9.]*/VERSION $VER/" CMakeLists.txt
+
+ # 2. meson.build
+ sed -i "s/version : '[0-9.]*'/version : '$VER'/" meson.build
+
+ # 3. vcpkg.json
+ jq ".version = \"$VER\"" vcpkg.json > vcpkg.json.tmp && mv vcpkg.json.tmp vcpkg.json
+
+ # 4. include/json/version.h
+ # We parse the base version for the numeric macros (MAJOR.MINOR.PATCH)
+ # while the 4-part string goes into JSONCPP_VERSION_STRING.
+ IFS='.' read -r MAJOR MINOR PATCH <<< "${{ steps.get_ver.outputs.base_version }}"
+
+ sed -i "s/# define JSONCPP_VERSION_STRING \"[^\"]*\"/# define JSONCPP_VERSION_STRING \"$VER\"/" include/json/version.h
+ sed -i "s/# define JSONCPP_VERSION_MAJOR [0-9]*/# define JSONCPP_VERSION_MAJOR $MAJOR/" include/json/version.h
+ sed -i "s/# define JSONCPP_VERSION_MINOR [0-9]*/# define JSONCPP_VERSION_MINOR $MINOR/" include/json/version.h
+ sed -i "s/# define JSONCPP_VERSION_PATCH [0-9]*/# define JSONCPP_VERSION_PATCH $PATCH/" include/json/version.h
+
+ - name: Commit and Push
+ run: |
+ git config user.name "github-actions[bot]"
+ git config user.email "github-actions[bot]@users.noreply.github.com"
+ git add .
+ git commit -m "chore: bump version to ${{ steps.get_ver.outputs.full_version }} (Run #${{ github.run_number }})"
+ git push