name: Auto Fix Lint and Format on: pull_request_target: types: [opened, synchronize] jobs: auto-fix: runs-on: ubuntu-latest permissions: contents: write pull-requests: write steps: - name: Checkout code uses: actions/checkout@v4 with: fetch-depth: 0 ref: ${{ github.head_ref }} repository: ${{ github.event.pull_request.head.repo.full_name }} - name: Setup pnpm uses: pnpm/action-setup@v2 - name: Setup Node.js uses: actions/setup-node@v4 with: node-version: "20" cache: "pnpm" - name: Install dependencies run: pnpm install - name: Run linter and fix issues run: pnpm run lint:fix - name: Run formatter run: pnpm run format - name: Commit and push changes uses: stefanzweifel/git-auto-commit-action@v5 with: commit_message: "chore: auto-fix linting and formatting issues" commit_options: "--no-verify" file_pattern: "." - name: Add PR comment uses: actions/github-script@v7 with: github-token: ${{secrets.GITHUB_TOKEN}} script: | const hasChanges = await github.rest.pulls.listFiles({ owner: context.repo.owner, repo: context.repo.repo, pull_number: context.issue.number }).then(response => response.data.length > 0); const message = hasChanges ? 'Linting and formatting issues were automatically fixed. Please review the changes.' : 'No linting or formatting issues were found.'; github.rest.issues.createComment({ issue_number: context.issue.number, owner: context.repo.owner, repo: context.repo.repo, body: message });