name: Lint & Test

on:
  push:
    branches:
      - 'prowler-3.0-dev'
  pull_request:
    branches:
      - 'prowler-3.0-dev'

jobs:
  build:

    runs-on: ubuntu-latest
    strategy:
      matrix:
        python-version: ["3.9"]

    steps:
      - uses: actions/checkout@v3
      - name: Set up Python ${{ matrix.python-version }}
        uses: actions/setup-python@v4
        with:
          python-version: ${{ matrix.python-version }}
      - name: Install dependencies
        run: |
          python -m pip install --upgrade pip
          pip install pipenv
          pipenv install --dev
          pipenv run pip list
      - name: Lint with flake8
        run: |
          pipenv run flake8 . --ignore=E266,W503,E203,E501,W605,E128 --exclude contrib
      - name: Checking format with black
        run: |
          pipenv run black --check .
      - name: Lint with pylint
        run: |
          pipenv run pylint --disable=W,C,R,E -j 0 providers lib util config
      - name: Bandit
        run: |
          pipenv run bandit -q -lll -x '*_test.py,./contrib/' -r .
      - name: Safety
        run: |
          pipenv run safety check
      - name: Vulture
        run: |
          pipenv run vulture --exclude "contrib" --min-confidence 100 .
      - name: Test with pytest
        run: |
          pipenv run pytest -n auto
