name: Dependabot Update All Go Modules
on: pull_request

permissions:
  contents: write
  pull-requests: write

env:
  PR_TITLE: ${{ github.event.pull_request.title }}

jobs:
  update-all:
    runs-on: depot-ubuntu-22.04-4
    if: ${{ github.actor == 'dependabot[bot]' }}
    steps:
      - name: Generate Token
        uses: actions/create-github-app-token@3ff1caaa28b64c9cc276ce0a02e2ff584f3900c5 # v1
        id: app-token
        with:
          app-id: "${{ secrets.APP_ID }}"
          private-key: "${{ secrets.APP_PRIVATE_KEY }}"
      - uses: actions/checkout@v4
        with:
          repository: ${{ github.event.pull_request.head.repo.full_name }}
          ref: ${{ github.event.pull_request.head.ref }}
          token: "${{ steps.app-token.outputs.token }}"
      - uses: actions/setup-go@v5
        with:
          go-version: "1.23"
          check-latest: true
      - name: Extract updated dependency
        id: deps
        run: |
          # Extract the dependency name from the PR title
          # Example: "build(deps): Bump github.com/cosmos/cosmos-sdk from 0.46.0 to 0.47.0"
          # Extracts "github.com/cosmos/cosmos-sdk" and "0.47.0"
          echo "name=$(echo "$PR_TITLE" | cut -d ' ' -f 3)" >> $GITHUB_OUTPUT
          echo "version=$(echo "$PR_TITLE" | cut -d ' ' -f 7)" >> $GITHUB_OUTPUT
      - name: Update all Go modules
        run: |
          ./scripts/go-update-dep-all.sh ${{ format('{0}@v{1}', steps.deps.outputs.name, steps.deps.outputs.version) }}
          ./scripts/go-mod-tidy-all.sh
      - name: Commit changes
        uses: EndBug/add-and-commit@v9
        with:
          default_author: user_info
          message: "${{ github.event.pull_request.title }} for all modules"
