# Workflow that runs lint on the frontend and python code
name: Lint

# The jobs in this workflow are required, so they must run at all times
# Always run on "main"
# Always run on PRs
on:
  push:
    branches:
      - main
  pull_request:

# If triggered by a PR, it will be in the same group. However, each commit on main will be in its own unique group
concurrency:
  group: ${{ github.workflow }}-${{ (github.head_ref && github.ref) || github.run_id }}
  cancel-in-progress: true

jobs:
  # Run lint on the frontend code
  lint-frontend:
    name: Lint frontend
    runs-on: ubuntu-22.04
    steps:
      - uses: actions/checkout@v6
      - name: Install Node.js 22
        uses: actions/setup-node@v6
        with:
          node-version: 22
          cache: 'npm'
          cache-dependency-path: frontend/package-lock.json
      - name: Install dependencies
        working-directory: ./frontend
        run: npm ci
      - name: Lint, TypeScript compilation, and translation checks
        run: |
          cd frontend
          npm run lint
          npm run make-i18n && npx tsc
          npm run check-translation-completeness

  # Run lint on the python code
  lint-python:
    name: Lint python
    runs-on: ubuntu-22.04
    steps:
      - uses: actions/checkout@v6
        with:
          fetch-depth: 0
      - name: Set up python
        uses: actions/setup-python@v6
        with:
          python-version: 3.12
          cache: "pip"
      - name: Install pre-commit
        run: pip install pre-commit==3.7.0
      - name: Run pre-commit hooks
        run: pre-commit run --all-files --show-diff-on-failure --config ./dev_config/python/.pre-commit-config.yaml
