| name: "update project version" |
| |
| on: |
| workflow_dispatch: |
| inputs: |
| target_version: |
| description: 'next version (e.g., 1.9.7 or 1.9.7.12)' |
| required: true |
| default: '1.9.7' |
| target_soversion: |
| description: 'next soversion (e.g., 28). leave blank to keep current.' |
| required: false |
| |
| jobs: |
| bump-and-verify: |
| runs-on: ubuntu-latest |
| permissions: |
| contents: write |
| pull-requests: write |
| steps: |
| - name: checkout code |
| uses: actions/checkout@v4 |
| |
| - name: update project files |
| id: update_files |
| run: | |
| VER="${{ github.event.inputs.target_version }}" |
| SOVER="${{ github.event.inputs.target_soversion }}" |
| echo "bumping version to $VER" |
| |
| # 1. CMakeLists.txt: Only update version inside the project() block |
| if [ -f CMakeLists.txt ]; then |
| echo "updating cmakelists.txt" |
| sed -i "/project[[:space:]]*([[:space:]]*jsoncpp/,/)/ s/VERSION [0-9.]*/VERSION $VER/" CMakeLists.txt |
| if [ -n "$SOVER" ]; then |
| sed -i "s/set(PROJECT_SOVERSION [0-9]*/set(PROJECT_SOVERSION $SOVER/" CMakeLists.txt |
| fi |
| fi |
| |
| # 2. meson.build: Only update version inside the project() block |
| if [ -f meson.build ]; then |
| echo "updating meson.build" |
| sed -i "/project('jsoncpp'/,/)/ s/version[[:space:]]*:[[:space:]]*['\"][0-9.]*['\"]/version : '$VER'/" meson.build |
| if [ -n "$SOVER" ]; then |
| # update soversion only within the library() or where defined |
| sed -i "s/soversion[[:space:]]*:[[:space:]]*['\"][0-9]*['\"]/soversion : '$SOVER'/" meson.build |
| fi |
| fi |
| |
| # 3. MODULE.bazel: Only update version inside the module() block |
| if [ -f MODULE.bazel ]; then |
| echo "updating MODULE.bazel" |
| # match range from 'module(' to the first ')' |
| sed -i "/module(/,/)/ s/version[[:space:]]*=[[:space:]]*['\"][0-9.]*['\"]/version = \"$VER\"/" MODULE.bazel |
| fi |
| |
| # 4. vcpkg.json: jq is inherently surgical |
| if [ -f vcpkg.json ]; then |
| echo "updating vcpkg.json" |
| jq ".version = \"$VER\"" vcpkg.json > vcpkg.json.tmp && mv vcpkg.json. |