name: "Auto-Fix code"
on:
  push:
    branches:
      - master

concurrency:
  group: ${{ github.workflow }}-${{ github.ref }}
  cancel-in-progress: true

jobs:
  autofix:
    if: github.repository_owner == 'dokuwiki'
    runs-on: ubuntu-latest
    steps:
      - name: Checkout
        uses: actions/checkout@v4
        with:
          fetch-depth: 0

      - name: Setup PHP
        uses: shivammathur/setup-php@v2
        with:
          php-version: '8.2'

      - name: Install tools
        run: |
          cd _test
          composer install --no-interaction --no-progress --no-suggest --prefer-dist

      - name: Setup Cache
        uses: actions/cache@v3
        with:
          path: _test/.rector-cache
          key: ${{ runner.os }}-rector-${{ hashFiles('_test/rector.php') }}

      - name: Run Rector
        run: ./_test/vendor/bin/rector process --config _test/rector.php --no-diffs

      - name: Run PHP CodeSniffer autofixing
        continue-on-error: true # even if not all errors are fixed, we want to create a PR
        run: ./_test/vendor/bin/phpcbf --standard=_test/phpcs_MigrationAdjustments.xml

      - name: Create Pull Request
        uses: peter-evans/create-pull-request@v6
        with:
          commit-message: "🤖 Rector and PHPCS fixes"
          title: "🤖 Automatic code style fixes"
          body: |
            These changes were made automatically by running rector and phpcbf.

            Please carefully check the changes before merging. Please note that unit tests are not run for automated pull requests - so if in doubt, manually test the branch before merging.

            If you disagree with the changes, simply clean the code yourself and create a new pull request. This PR automatically closes when no more changes are suggested by rector and phpcbf.
          delete-branch: true
          branch: "bot/autofix"
