name: Lint Codebase

on:
  push:
    branches: [main]
  pull_request:
    branches: [main]

permissions:
  contents: write

jobs:
  lint:
    runs-on: ubuntu-latest

    steps:
      - name: Checkout code
        uses: actions/checkout@v4
        with:
          fetch-depth: 1

      - name: Setup Bun
        uses: oven-sh/setup-bun@v1
        with:
          bun-version: latest

      - name: Cache dependencies
        uses: actions/cache@v3
        with:
          path: |
            ./bun_modules
            ./node_modules
            ./bun.lock
          key: ${{ runner.os }}-bun-${{ hashFiles('bun.lock') }}

      - name: Install dependencies
        run: bun install --frozen-lockfile

      - name: Run JS Lint
        run: bun run lint:js -- --fix
        continue-on-error: true

      - name: Run CSS Lint
        run: bun run lint:css -- --fix
        continue-on-error: true

      - name: Format with Prettier
        run: bun run format
        continue-on-error: true

      - name: Commit and Push lint fixes
        uses: stefanzweifel/git-auto-commit-action@v5
        with:
          commit_message: 'style: auto-fix linting issues'
          commit_user_name: 'github-actions[bot]'
          commit_user_email: 'github-actions[bot]@users.noreply.github.com'
          only_if_changed: true

      - name: Run HTML Lint
        run: bun run lint:html
