name: Lint code

on:
  workflow_call:
  pull_request:
    types: [opened, synchronize]
    branches-ignore: [staging, production]

jobs:
  lint:
    if: ${{ github.actor != 'OSBotify' || github.event_name == 'workflow_call' }}
    runs-on: ubuntu-latest
    steps:
      - name: Checkout
        uses: actions/checkout@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8

      - name: Setup Node
        uses: Expensify/App/.github/actions/composite/setupNode@main

      - name: Lint JavaScript and Typescript with ESLint
        run: npm run lint
        env:
          CI: true

      - name: Lint shell scripts with ShellCheck
        run: npm run shellcheck

      - name: Verify there's no Prettier diff
        run: |
          npm run prettier -- --loglevel silent
          if ! git diff --name-only --exit-code; then
            # shellcheck disable=SC2016
            echo 'Error: Prettier diff detected! Please run `npm run prettier` and commit the changes.'
            exit 1
          fi

      - name: Run unused style searcher
        shell: bash
        run: ./.github/scripts/findUnusedKeys.sh