# Source: https://github.com/arduino/tooling-project-assets/blob/main/workflow-templates/check-python-task.md
name: Check Python

env:
  # See: https://github.com/actions/setup-python/tree/main#available-versions-of-python
  PYTHON_VERSION: "3.9"

# See: https://docs.github.com/en/actions/reference/events-that-trigger-workflows
on:
  push:
    paths:
      - ".github/workflows/check-python-task.ya?ml"
      - "**/.flake8"
      - "**/poetry.lock"
      - "**/pyproject.toml"
      - "**/setup.cfg"
      - "Taskfile.ya?ml"
      - "**/tox.ini"
      - "**.py"
  pull_request:
    paths:
      - ".github/workflows/check-python-task.ya?ml"
      - "**/.flake8"
      - "**/poetry.lock"
      - "**/pyproject.toml"
      - "**/setup.cfg"
      - "Taskfile.ya?ml"
      - "**/tox.ini"
      - "**.py"
  workflow_dispatch:
  repository_dispatch:

jobs:
  lint:
    runs-on: ubuntu-latest

    steps:
      - name: Checkout repository
        uses: actions/checkout@v3

      - name: Install Python
        uses: actions/setup-python@v4
        with:
          python-version: ${{ env.PYTHON_VERSION }}

      - name: Install Poetry
        run: pip install poetry

      - name: Install Task
        uses: arduino/setup-task@v1
        with:
          repo-token: ${{ secrets.GITHUB_TOKEN }}
          version: 3.x

      - name: Run flake8
        uses: liskin/gh-problem-matcher-wrap@v1
        with:
          linters: flake8
          run: task python:lint

  formatting:
    runs-on: ubuntu-latest

    steps:
      - name: Checkout repository
        uses: actions/checkout@v3

      - name: Install Python
        uses: actions/setup-python@v4
        with:
          python-version: ${{ env.PYTHON_VERSION }}

      - name: Install Poetry
        run: pip install poetry

      - name: Install Task
        uses: arduino/setup-task@v1
        with:
          repo-token: ${{ secrets.GITHUB_TOKEN }}
          version: 3.x

      - name: Format Python code
        run: task python:format

      - name: Check formatting
        run: git diff --color --exit-code
