name: build

on: [push, pull_request]

jobs:
  build:
    runs-on: ubuntu-latest
    strategy:
      matrix:
        python-version: ["3.11", "3.9"]

    steps:
    - uses: actions/checkout@v3
    - name: Set up Python ${{ matrix.python-version }}
      uses: actions/setup-python@v4.4.0
      with:
        python-version: ${{ matrix.python-version }}

    - name: Install poetry
      run: make poetry-download

    - name: Set up cache
      uses: actions/cache@v3.2.1
      with:
        path: .venv
        key: venv-${{ matrix.python-version }}-${{ hashFiles('pyproject.toml') }}-${{ hashFiles('poetry.lock') }}
    - name: Install dependencies
      run: |
        poetry config virtualenvs.in-project true
        poetry install

    - name: Run style checks
      run: |
        make check-codestyle

    - name: Run tests
      run: |
        make test

    - name: Run safety checks
      run: |
        make check-safety
