name: Cleanup caches for closed PRs
on:
  pull_request:
    types:
      - closed

jobs:
  cleanup:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - name: Cleanup
        run: |
          gh extension install actions/gh-actions-cache

          REPO="${{ github.repository }}"
          BRANCH="refs/pull/${{ github.event.pull_request.number }}/merge"

          while true; do
              echo "Fetching list of cache key"
              cacheKeysForPR="$(gh actions-cache list -R "$REPO" -B "$BRANCH" -L 100 | cut -f 1 )"

              if [ -z "$cacheKeysForPR" ]; then
                  break
              fi

              ## Setting this to not fail the workflow while deleting cache keys. 
              set +e
              echo "Deleting caches..."
              for cacheKey in $cacheKeysForPR
              do
                  echo Removing "$cacheKey"
                  gh actions-cache delete "$cacheKey" -R "$REPO" -B "$BRANCH" --confirm
              done
          done
          echo "Done"
        env:
          GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}