---
name: "Reviewdog Linters"

on:
  - pull_request

jobs:
  changes:
    runs-on: ubuntu-latest
    # Set job outputs to values from filter step
    steps:
      - uses: dorny/paths-filter@ebc4d7e9ebcb0b1eb21480bb8f43113e996ac77a
        id: filter
        with:
          # Path to file where filters are defined
          filters: |
            github:
              - '.github/workflows/**/*.yml'
            shell:
              - 'bin/*'
            style:
              - '**/*.css'
          list-files: shell
    outputs:
      github: ${{ steps.filter.outputs.github }}
      shell: ${{ steps.filter.outputs.shell }}
      style: ${{ steps.filter.outputs.style }}
      style_files: ${{ steps.filter.outputs.style_files }}

  actionlint:
    needs: changes
    if: ${{ needs.changes.outputs.github == 'true' }}
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4

      - name: actionlint
        uses: reviewdog/action-actionlint@v1.57.0
        with:
          reporter: github-pr-review

  shellcheck:
    needs: changes
    if: ${{ needs.changes.outputs.shell == 'true' }}
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: shellcheck
        uses: reviewdog/action-shellcheck@96fa305c16b0f9cc9b093af22dcd09de1c8f1c2d
        with:
          path: "bin"
          pattern: "*"
          exclude: "./.git/*"
          reporter: github-pr-review

  stylelint:
    needs: changes
    if: ${{ needs.changes.outputs.style == 'true' }}
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-node@v4
        with:
          cache: "yarn"
          cache-dependency-path: yarn.lock
          node-version: "20.x"

      - run: yarn install --prefer-offline --frozen-lockfile

      - name: stylelint
        uses: reviewdog/action-stylelint@eadef3f639793f2b361a4719ee8720bf5055a0ff
        with:
          fail_on_error: true
          stylelint_input: "${{ needs.changes.outputs.style_files }} --allow-empty-input"
          stylelint_config: ".stylelintrc.json"
          reporter: github-pr-review
