name: CI

on:
    push:
        branches:
            - "*"
    pull_request:
    workflow_dispatch:

jobs:
    lint:
        runs-on: ubuntu-latest
        steps:
            - name: Checkout
              uses: https://git.quad4.io/actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
            - name: Setup Node.js
              uses: https://git.quad4.io/actions/setup-node@395ad3262231945c25e8478fd5baf05154b1d79f # v6.1.0
              with:
                  node-version: 22
                  cache: pnpm
            - name: Setup Python
              uses: https://git.quad4.io/actions/setup-python@83679a892e2d95755f2dac6acb0bfd1e9ac5d548 # v6.1.0
              with:
                  python-version: "3.13"
            - name: Setup Task
              uses: https://git.quad4.io/actions/setup-task@0ab1b2a65bc55236a3bc64cde78f80e20e8885c2 # v1
              with:
                  version: "3.46.3"
            - name: Setup Poetry
              run: pip install poetry
            - name: Setup Python environment
              run: task setup-python-env
            - name: Install Node dependencies
              run: task node_modules
            - name: Lint
              run: task lint

    build-frontend:
        runs-on: ubuntu-latest
        steps:
            - name: Checkout
              uses: https://git.quad4.io/actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
            - name: Setup Node.js
              uses: https://git.quad4.io/actions/setup-node@395ad3262231945c25e8478fd5baf05154b1d79f # v6.1.0
              with:
                  node-version: 22
                  cache: pnpm
            - name: Setup Task
              uses: https://git.quad4.io/actions/setup-task@0ab1b2a65bc55236a3bc64cde78f80e20e8885c2 # v1
              with:
                  version: "3.46.3"
            - name: Install dependencies
              run: task node_modules
            - name: Determine version
              id: version
              run: |
                  SHORT_SHA=$(git rev-parse --short HEAD)
                  echo "version=${SHORT_SHA}" >> $GITHUB_OUTPUT
            - name: Build frontend
              run: task build-frontend
              env:
                  VITE_APP_VERSION: ${{ steps.version.outputs.version }}

    test-backend:
        runs-on: ubuntu-latest
        steps:
            - name: Checkout
              uses: https://git.quad4.io/actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
            - name: Setup Python
              uses: https://git.quad4.io/actions/setup-python@83679a892e2d95755f2dac6acb0bfd1e9ac5d548 # v6.1.0
              with:
                  python-version: "3.13"
            - name: Setup Task
              uses: https://git.quad4.io/actions/setup-task@0ab1b2a65bc55236a3bc64cde78f80e20e8885c2 # v1
              with:
                  version: "3.46.3"
            - name: Compile backend
              run: task compile
