name: Lint
permissions:
  contents: read

on:
  pull_request:

jobs:
  lint:
    name: Lint
    runs-on: ubuntu-latest

    steps:
      - name: Checkout Repo
        uses: actions/checkout@v4

      - name: Parse .tool-versions
        uses: wistia/parse-tool-versions@v2.1.1
        with:
          filename: '.tool-versions'
          uppercase: 'true'
          prefix: 'tool_version_'

      - uses: pnpm/action-setup@v4
        with:
          version: '${{ env.TOOL_VERSION_PNPM }}'

      - name: Setup Node.js
        uses: actions/setup-node@v4
        with:
          node-version: '${{ env.TOOL_VERSION_NODEJS }}'
          cache: pnpm

      - name: Configure pnpm
        run: |
          pnpm config set auto-install-peers true
          pnpm config set exclude-links-from-lockfile true

      - name: Install dependencies
        run: pnpm install --frozen-lockfile

      - name: Set up Python
        uses: actions/setup-python@v4
        with:
          python-version: '${{ env.TOOL_VERSION_PYTHON }}'

      - name: Install and configure Poetry
        uses: snok/install-poetry@v1
        with:
          version: '${{ env.TOOL_VERSION_POETRY }}'
          virtualenvs-create: true
          virtualenvs-in-project: true
          installer-parallel: true

      - name: Install Python dependencies
        working-directory: packages/python-sdk
        run: |
          poetry install --with dev

      - name: Run linting
        run: |
          pnpm run lint

      - name: Run formatting
        run: |
          pnpm run format

      - name: Check for uncommitted changes
        run: |
          if [[ -n $(git status --porcelain) ]]; then
            echo "❌ Files are not formatted properly:"
            git status --short
            git diff
            exit 1
          else
            echo "✅ No changes detected."
          fi
