name: "[CI] Lint code"
on:
  push:
    branches:
      - develop
      - release/*
      - "*-stable"
  pull_request:
    branches-ignore:
      - "chore/l10n*"

env:
  CI: "true"
  SIMPLECOV: "true"
  RUBY_VERSION: 3.1.1
  NODE_VERSION: 18.17.1
  SHAKAPACKER_RUNTIME_COMPILE: "false"

concurrency:
  group: ${{ github.workflow }}-${{ github.head_ref || github.ref }}
  cancel-in-progress: true

jobs:
  lint:
    strategy:
      fail-fast: false
      matrix:
        command:
          - bundle exec rubocop -P
          - npm run lint
          - npm run stylelint
          - ./.github/run_erblint.sh
          - npm run markdownlint
          - ./.github/run_spelling_check.sh
          - npm run linthtml
    name: Lint code
    runs-on: ubuntu-22.04
    if: "!startsWith(github.head_ref, 'chore/l10n')"
    timeout-minutes: 60
    steps:
      - uses: actions/checkout@v3
        with:
          fetch-depth: 1
      - uses: ruby/setup-ruby@v1
        with:
          ruby-version: ${{ env.RUBY_VERSION }}
          bundler-cache: true
      - uses: actions/setup-node@v3
        with:
          node-version: ${{ env.NODE_VERSION }}
      - name: Get npm cache directory path
        id: npm-cache-dir-path
        run: echo "dir=$(npm get cache)-lint" >> $GITHUB_OUTPUT
      - uses: actions/cache@v3
        id: npm-cache
        with:
          path: ${{ steps.npm-cache-dir-path.outputs.dir }}
          key: npm-${{ hashFiles('**/package-lock.json') }}
          restore-keys: |
            npm-
      - name: Install JS dependencies
        run: npm ci
      - run: ${{ matrix.command }}
        name: ${{ matrix.command }}