---
name: "Lint"

"on":
    workflow_dispatch:
    pull_request:
    push:

concurrency:
    group: ${{ github.workflow }}-${{ github.ref }}
    cancel-in-progress: true

env:
    UV_LOCKED: "true"
    UV_MANAGED_PYTHON: "true"

jobs:
    mypy:
        name: mypy
        runs-on: any
        steps:
            - name: Checkout
              uses: github-mirrors/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1

            - name: Install dependencies
              run: uv sync --all-extras --all-packages --no-progress

            - name: Running mypy
              run: uv --offline run --no-sync --no-progress mypy --verbose ./

    pylint:
        name: pylint
        runs-on: any
        steps:
            - name: Checkout
              uses: github-mirrors/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1

            - name: Install dependencies
              run: uv sync --all-extras --all-packages --no-progress

            - name: Running pylint
              run: uv --offline run --no-sync --no-progress pylint --verbose ./

    isort:
        name: isort
        runs-on: any
        steps:
            - name: Checkout
              uses: github-mirrors/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1

            - name: Install dependencies
              run: uv sync --all-extras --all-packages --no-progress

            - name: Running isort
              run: uv --offline run --no-sync --no-progress isort --check-only --verbose ./

    black:
        name: black
        runs-on: any
        steps:
            - name: Checkout
              uses: github-mirrors/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1

            - name: Install dependencies
              run: uv sync --all-extras --all-packages --no-progress

            - name: Running black
              run: uv --offline run --no-sync --no-progress black --check --verbose ./

    ruff:
        name: ruff
        runs-on: any
        steps:
            - name: Checkout
              uses: github-mirrors/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1

            - name: Install dependencies
              run: uv sync --all-extras --all-packages --no-progress

            - name: Running ruff
              run: uv --offline run --no-sync --no-progress ruff check --verbose ./

    pyright:
        name: pyright
        runs-on: any
        steps:
            - name: Checkout
              uses: github-mirrors/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1

            - name: Install dependencies
              run: uv sync --all-extras --all-packages --no-progress

            - name: Running pyright
              run: uv --offline run --no-sync --no-progress pyright --verbose

    yamllint:
        name: yamllint
        runs-on: any
        steps:
            - name: Checkout
              uses: github-mirrors/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1

            - name: Install dependencies
              run: uv sync --all-extras --all-packages --no-progress

            - name: Running yamllint
              run: uv --offline run --no-sync --no-progress yamllint --strict ./

    prettier:
        name: prettier
        runs-on: any
        steps:
            - name: Checkout
              uses: github-mirrors/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1

            - name: Running prettier
              run: prettier --check .
