---
name: Integration

# yamllint disable-line rule:truthy
on:
  push:
    branches:
      - master
  pull_request:
    branches:
      - master

concurrency:
  group: ${{ github.workflow }}-${{ github.ref_name }}
  cancel-in-progress: false

permissions:
  contents: read

env:
  PYTHON_VERSION: "3.14"

jobs:
  test:
    name: Python ${{ matrix.python-version }}
    runs-on: ubuntu-24.04
    strategy:
      matrix:
        python-version:
          - "3.11"
          - "3.12"
          - "3.13"
          - "3.14"

    steps:
      - name: Setup Python
        uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405  # v6.2.0
        with:
          python-version: "${{ matrix.python-version }}"

      - name: Checkout
        uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd  # v6.0.2
        with:
          persist-credentials: "false"

      - name: Setup cache Python
        uses: actions/cache@27d5ce7f107fe9357f9df03efb73ab90386fccae  # v5.0.5
        with:
          key: "python-${{ matrix.python-version }}-${{ runner.arch }}-${{ hashFiles('./requirements*.txt') }}"
          restore-keys: |
            python-${{ matrix.python-version }}-${{ runner.arch }}-
          path: "./local/"

      - name: Setup venv
        run: make V=1 install

      - name: Run tests
        run: make V=1 ci.test

  theme:
    name: Theme
    runs-on: ubuntu-24.04-arm
    steps:
      - name: Setup Python
        uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405  # v6.2.0
        with:
          python-version: "${{ env.PYTHON_VERSION }}"

      - name: Checkout
        uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd  # v6.0.2
        with:
          persist-credentials: "false"

      - name: Setup Node.js
        uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e  # v6.4.0
        with:
          node-version-file: "./.nvmrc"

      - name: Setup cache Node.js
        uses: actions/cache@27d5ce7f107fe9357f9df03efb73ab90386fccae  # v5.0.5
        with:
          key: "nodejs-${{ runner.arch }}-${{ hashFiles('./.nvmrc', './package.json') }}"
          path: "./client/simple/node_modules/"

      - name: Setup cache Python
        uses: actions/cache@27d5ce7f107fe9357f9df03efb73ab90386fccae  # v5.0.5
        with:
          key: "python-${{ env.PYTHON_VERSION }}-${{ runner.arch }}-${{ hashFiles('./requirements*.txt') }}"
          restore-keys: |
            python-${{ env.PYTHON_VERSION }}-${{ runner.arch }}-
          path: "./local/"

      - name: Setup venv
        run: make V=1 install

      - name: Lint
        run: make themes.lint

      - name: Build
        run: make themes.all
