name: 'ESLint && Prettier'
on:
  push:
    branches:
      - main
  pull_request:
    branches:
      - main
  workflow_dispatch:

permissions:
  contents: write

jobs:
  lint:
    runs-on: ubuntu-latest
    name: Lint
    steps:
      - name: Checkout
        uses: actions/checkout@v4
        with:
          token: ${{ secrets.PAT || github.token }}

      - name: Setup pnpm
        uses: pnpm/action-setup@v3
        with:
          version: 8

      - name: Get pnpm store directory
        id: pnpm-cache
        run: echo "STORE_PATH=$(pnpm store path)" >> $GITHUB_OUTPUT

      - name: Setup pnpm cache
        uses: actions/cache@v4
        with:
          path: ${{ steps.pnpm-cache.outputs.STORE_PATH }}
          key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}
          restore-keys: ${{ runner.os }}-pnpm-store-

      - name: Install dependencies
        run: pnpm install

      - name: Lint Check
        continue-on-error: true
        id: check
        run: pnpm run lint:check

      - name: Format manually
        id: format
        if: ${{ steps.check.outcome == 'failure' }}
        run: pnpm run lint

      - name: Commit
        if: ${{ steps.format.outcome == 'success' }}
        uses: stefanzweifel/git-auto-commit-action@v5
        with:
          commit_message: 'ci: format code'
