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

env:
  FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: true

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"
