name: "Setup project"
description: "Setup Python and Poetry"
runs:
  using: composite
  steps:
    - name: Install apt packages
      uses: awalsh128/cache-apt-pkgs-action@latest
      with:
        packages: gettext libgraphviz-dev
        version: 1.0  # increment to reset cache

    - name: Install dependencies
      run: |
        sudo apt update
        sudo apt install gettext libgraphviz-dev
      shell: bash

    - name: Set up python
      uses: actions/setup-python@v5
      with:
        python-version: "3.12"

    - name: Load cached Poetry installation
      id: cached-poetry
      uses: actions/cache@v3
      with:
        path: ~/.local
        key: poetry-1  # increment to reset cache

    - name: Install Poetry
      if: steps.cached-poetry.outputs.cache-hit != 'true'
      shell: bash
      run: curl -sSL https://install.python-poetry.org | python3 -

    - name: Check pyproject.toml syntax
      shell: bash
      run: poetry check

    - name: Load cached dependencies
      uses: actions/cache@v3
      with:
        path: ~/.cache/pypoetry
        key: ${{ runner.os }}-poetry-${{ hashFiles('**/poetry.lock') }}
        restore-keys: |
          ${{ runner.os }}-poetry-

    - name: Install dependencies
      run: poetry install --with docs,tests
      shell: bash

    - name: Install xapian
      run: poetry run ./manage.py install_xapian
      shell: bash

    - name: Compile gettext messages
      run: poetry run ./manage.py compilemessages
      shell: bash