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
        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)
            QUALIFIER=$(echo "$VER" | cut -d. -f4 -s)

            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
            
            if [ -n "$QUALIFIER" ]; then
              sed -i "s/#define JSONCPP_VERSION_QUALIFIER.*/#define JSONCPP_VERSION_QUALIFIER $QUALIFIER/" include/json/version.h
            else
              sed -i "s/#define JSONCPP_VERSION_QUALIFIER.*/#define JSONCPP_VERSION_QUALIFIER/" include/json/version.h
            fi
          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')
            V_QUA=$(grep "JSONCPP_VERSION_QUALIFIER" "$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 "| QUALIFIER | \`${V_QUA:-empty}\` |" >> $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"
