on:
  push:
    branches:
      - renovate/*
permissions:
  contents: read
name: renovate
jobs:
  update_repositoriesbzl:
    container:
      image: ghcr.io/grpc-ecosystem/grpc-gateway/build-env:latest
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
        with:
          fetch-depth: 0
          token: ${{ secrets.GH_PUSH_TOKEN }}
      - uses: actions/cache@cdf6c1fa76f9f475f3d7449005a359c84ca0f306 # v5
        with:
          path: /home/vscode/.cache/_grpc_gateway_bazel
          key: v1-bazel-cache-${{ hashFiles('repositories.bzl') }}
          restore-keys: v1-bazel-cache-
      - name: Configure bazel
        run:
          | # put .bazelrc in $HOME so that it's read before project's .bazelrc
          cat > /home/vscode/.bazelrc << EOF
          startup --output_base /home/vscode/.cache/_grpc_gateway_bazel
          build --@io_bazel_rules_go//go/config:race
          # Workaround https://github.com/bazelbuild/bazel/issues/3645
          # See https://docs.bazel.build/versions/0.23.0/command-line-reference.html
          build --local_ram_resources=7168 # Github runners have 7G of memory
          build --local_cpu_resources=2    # Github runners have 2 vCPU
          EOF
      - run: bazel run //:gazelle -- update-repos -from_file=go.mod -to_macro=repositories.bzl%go_repositories
        # Required with newer versions of Git
        # https://github.com/actions/checkout/issues/766
      - run: git config --global --add safe.directory "$GITHUB_WORKSPACE"
      - run: |
          git add .
          if output=$(git status --porcelain) && [ ! -z "$output" ]; then
            git config user.name "Renovate Bot"
            git config user.email "bot@renovateapp.com"
            git commit --amend --no-edit
            git push --force-with-lease origin ${{ github.ref_name }}
          fi
  regenerate:
    container:
      image: ghcr.io/grpc-ecosystem/grpc-gateway/build-env:latest
    runs-on: ubuntu-latest
    needs:
      # Run after update_repositoriesbzl to avoid
      # git conflicts
      - update_repositoriesbzl
    steps:
      - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
        with:
          fetch-depth: 0
          token: ${{ secrets.GH_PUSH_TOKEN }}
        # Required with newer versions of Git
        # https://github.com/actions/checkout/issues/766
      - run: git config --global --add safe.directory "$GITHUB_WORKSPACE"
      - run: make install
      - run: make clean
      - run: make generate
      - run: go mod tidy
      - run: |
          git add .
          if output=$(git status --porcelain) && [ ! -z "$output" ]; then
            git config user.name "Renovate Bot"
            git config user.email "bot@renovateapp.com"
            git commit --amend --no-edit
            git push --force-with-lease origin ${{ github.ref_name }}
          fi
