name: Lint Fix

on:
  pull_request:
    types: [labeled]

jobs:
  # Frontend lint fixes
  lint-fix-frontend:
    if: github.event.label.name == 'lint-fix'
    name: Fix frontend linting issues
    runs-on: ubuntu-22.04
    permissions:
      contents: write
      pull-requests: write
    steps:
      - uses: actions/checkout@v6
        with:
          ref: ${{ github.head_ref }}
          repository: ${{ github.event.pull_request.head.repo.full_name }}
          fetch-depth: 0
          token: ${{ secrets.GITHUB_TOKEN }}

      - name: Install Node.js 22
        uses: actions/setup-node@v6
        with:
          node-version: 22
          cache: 'npm'
          cache-dependency-path: frontend/package-lock.json
      - name: Install frontend dependencies
        working-directory: ./frontend
        run: npm ci
      - name: Generate i18n and route types
        run: |
          cd frontend
          npm run make-i18n
          npx react-router typegen || true

      - name: Fix frontend lint issues
        run: |
          cd frontend
          npm run lint:fix

      # Commit and push changes if any
      - name: Check for changes
        id: git-check
        run: |
          git diff --quiet || echo "changes=true" >> $GITHUB_OUTPUT
      - name: Commit and push if there are changes
        if: steps.git-check.outputs.changes == 'true'
        run: |
          git config --local user.email "openhands@all-hands.dev"
          git config --local user.name "OpenHands Bot"
          git add -A
          git commit -m "🤖 Auto-fix frontend linting issues" --no-verify
          git push

  # Python lint fixes
  lint-fix-python:
    if: github.event.label.name == 'lint-fix'
    name: Fix Python linting issues
    runs-on: ubuntu-22.04
    permissions:
      contents: write
      pull-requests: write
    steps:
      - uses: actions/checkout@v6
        with:
          ref: ${{ github.head_ref }}
          repository: ${{ github.event.pull_request.head.repo.full_name }}
          fetch-depth: 0
          token: ${{ secrets.GITHUB_TOKEN }}

      - name: Set up python
        uses: actions/setup-python@v6
        with:
          python-version: 3.12
          cache: "pip"
      - name: Install pre-commit
        run: pip install pre-commit==3.7.0
      - name: Fix python lint issues
        run: |
          # Run all pre-commit hooks and continue even if they modify files (exit code 1)
          pre-commit run --config ./dev_config/python/.pre-commit-config.yaml --all-files || true

      # Commit and push changes if any
      - name: Check for changes
        id: git-check
        run: |
          git diff --quiet || echo "changes=true" >> $GITHUB_OUTPUT
      - name: Commit and push if there are changes
        if: steps.git-check.outputs.changes == 'true'
        run: |
          git config --local user.email "openhands@all-hands.dev"
          git config --local user.name "OpenHands Bot"
          git add -A
          git commit -m "🤖 Auto-fix Python linting issues" --no-verify
          git push
