
name: lint | code & tests

on:
  pull_request:
    branches:
      - main
      - devel
  workflow_dispatch:

concurrency:
  group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
  cancel-in-progress: true

jobs:
  get_docs_changes:
    name: docs changes
    uses: ./.github/workflows/get_docs_changes.yml

  run_lint:
    name: lint
    needs: get_docs_changes
    if: needs.get_docs_changes.outputs.changes_outside_docs == 'true'
    strategy:
      fail-fast: true
      matrix:
        os:
          - ubuntu-latest
        python-version: ["3.8.x", "3.9.x", "3.10.x", "3.11.x"]

    defaults:
      run:
        shell: bash
    runs-on: ${{ matrix.os }}

    steps:

      - name: Check out
        uses: actions/checkout@master

      - name: Setup Python
        uses: actions/setup-python@v5
        with:
          python-version: ${{ matrix.python-version }}

      - name: Install Poetry
        uses: snok/install-poetry@v1
        with:
          virtualenvs-create: true
          virtualenvs-in-project: true
          installer-parallel: true

      - name: Load cached venv
        id: cached-poetry-dependencies
        uses: actions/cache@v3
        with:
          path: .venv
          key: venv-${{ matrix.os }}-${{ matrix.python-version }}-${{ hashFiles('**/poetry.lock') }}

      - name: Install dependencies
        # if: steps.cached-poetry-dependencies.outputs.cache-hit != 'true'
        run: poetry install --all-extras --no-root

      - name: Set Script Permissions
        run: chmod +x ./tools/check-package.sh


#      - name: Run make lint
#        run: |
#          export PATH=$PATH:"/c/Program Files/usr/bin" # needed for Windows
#          ./tools/check-package.sh
#          poetry run python ./tools/check-lockfile.py
#          poetry run mypy --config-file mypy.ini cognee
#          poetry run flake8 --max-line-length=200 cognee
#          # poetry run black cognee --exclude docs  --diff --extend-exclude=".*syntax_error.py"
#          # poetry run isort ./ --diff
#              poetry run bandit -r cognee/ -n 3 -l
#
#  matrix_job_required_check:
#    name: lint | code & tests
#    needs: run_lint
#    runs-on: ubuntu-latest
#    if: always()
#    steps:
#      - name: Check matrix job results
#        if: contains(needs.*.result, 'failure') || contains(needs.*.result, 'cancelled')
#        run: |
#          echo "One or more matrix job tests failed or were cancelled. You may need to re-run them." && exit 1
