name: Python

on:
    pull_request:

jobs:
    lint-format:
        runs-on: alpine
        container: node:26-alpine

        steps:
            - name: Checkout
              uses: actions/checkout@v4

            - name: Install tools
              run: |
                  apk add --no-cache \
                    git \
                    python3 \
                    py3-pip
                  python3 -m venv .venv
                  . .venv/bin/activate
                  pip install --no-cache-dir ruff

            - name: Format check
              continue-on-error: true
              run: |
                  . .venv/bin/activate
                  ruff format --check .

            - name: Lint
              run: |
                  . .venv/bin/activate
                  ruff check .

    test:
        runs-on: alpine
        container: node:26-alpine

        steps:
            - name: Checkout
              uses: actions/checkout@v4

            - name: Install tools
              run: |
                  apk add --no-cache \
                    git \
                    python3 \
                    py3-pip \
                    py3-pillow \
                    build-base
                  python3 -m venv .venv
                  . .venv/bin/activate
                  pip install --no-cache-dir \
                    typer \
                    pillow \
                    materialyoucolor \
                    jinja2 \
                    pytest

            - name: Test
              run: |
                  . .venv/bin/activate
                  cd cli
                  python -m pytest tests/ -v
