name: "update project version"

on:
  workflow_dispatch:
    inputs:
      target_version:
        description: 'next version (e.g., 1.9.8)'
        required: true
        default: '1.9.8'
      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
        run: |
          VER="${{ github.event.inputs.target_version }}"
          SOVER="${{ github.event.inputs.target_soversion }}"
          echo "bumping to $VER"

          # 1. cmakelists.txt
          if [ -f CMakeLists.txt ]; then
            sed -i "/project.*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
          if [ -f meson.build ]; then
            # targeting the version line directly
            sed -i "s/version[[:space:]]*:[[:space:]]*['\"][0-9.]*['\"]/version : '$VER'/" meson.build
            if [ -n "$SOVER" ]; then
              sed -i "s/soversion[[:space:]]*:[[:space:]]*['\"][0-9]*['\"]/soversion : '$SOVER'/" meson.build
            fi
          fi

          # 3. module.bazel
          if [ -f MODULE.bazel ]; then
            # match only the first 'version' occurrence in the file (the module version)
            sed -i "0,/version[[:space:]]*=[[:space:]]*['\"][0-9.]*['\"]/s//version = \"$VER\"/" MODULE.bazel
          fi

          # 4. vcpkg.json
          if [ -f vcpkg.json ]; then
            jq --arg ver "$VER" '.version = $ver' vcpkg.json > tmp.json && mv tmp.json vcpkg.json
          fi

          # 5. include/json/version.h
          if [ -f include/json/version.h ]; then
            MAJOR=$(echo "$VER" | cut -d. -f1)
            MINOR=$(echo "$VER" | cut -d. -f2)
            PATCH=$(echo "$VER" | cut -d. -f3)

            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
          fi

      - name: verify version macros
        id: verify
        run: |
          FILE="include/json/version.h"
          if [ -f "$FILE" ]; then
            # extract clean values by stripping everything except digits and dots
            V_STR=$(grep "JSONCPP_VERSION_STRING" "$FILE" | head -n 1 | cut -d '"' -f 2)
            V_MAJ=$(grep "JSONCPP_VERSION_MAJOR" "$FILE" | head -n 1 | awk '{print $3}' | tr -cd '0-9')
            V_MIN=$(grep "JSONCPP_VERSION_MINOR" "$FILE" | head -n 1 | awk '{print $3}' | tr -cd '0-9')
            V_PAT=$(grep "JSONCPP_VERSION_PATCH" "$FILE" | head -n 1 | awk '{print $3}' | tr -cd '0-9')

            # create a unique delimiter for the multi-line output
            DELIM=$(dd if=/dev/urandom bs=15 count=1 2>/dev/null | base64)
            echo "report<<$DELIM" >> $GITHUB_OUTPUT
            echo "| Macro | Value |" >> $GITHUB_OUTPUT
            echo "| :--- | :--- |" >> $GITHUB_OUTPUT
            echo "| STRING | \`$V_STR\` |" >> $GITHUB_OUTPUT
            echo "| MAJOR | \`$V_MAJ\` |" >> $GITHUB_OUTPUT
            echo "| MINOR | \`$V_MIN\` |" >> $GITHUB_OUTPUT
            echo "| PATCH | \`$V_PAT\` |" >> $GITHUB_OUTPUT
            echo "$DELIM" >> $GITHUB_OUTPUT
          fi

      - name: sanity check (cmake configure)
        run: |
          if [ -f CMakeLists.txt ]; then
            mkdir build_check && cd build_check
            cmake .. -DJSONCPP_WITH_TESTS=OFF -DJSONCPP_WITH_POST_BUILD_UNITTEST=OFF
            cd .. && rm -rf build_check
          fi

      - name: create pull request
        uses: peter-evans/create-pull-request@v7
        with:
          token: ${{ secrets.GITHUB_TOKEN }}
          commit-message: "chore: bump version to ${{ github.event.inputs.target_version }}"
          branch: "bump-to-${{ github.event.inputs.target_version }}"
          title: "chore: bump version to ${{ github.event.inputs.target_version }}"
          body: |
            automated version bump.
            - new version: `${{ github.event.inputs.target_version }}`
            - new soversion: `${{ github.event.inputs.target_soversion || 'no change' }}`

            ### header verification
            ${{ steps.verify.outputs.report }}
          labels: "maintenance"
