# generates the parser with 'tree-sitter generate' if the parser is out of date
name: Generate Parser

on:
  push:
    branches:
      - main

jobs:
  generate:
    name: Generate Parser
    runs-on: ubuntu-latest

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

      - name: Install Node
        uses: actions/setup-node@v4

      - name: Cache npm dependencies
        uses: actions/cache@v3
        with:
          path: ~/.npm
          key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }}
          restore-keys: |
            ${{ runner.os }}-node-

      - name: Install npm dependencies
        run: npm ci

      - name: Generate parser files
        run: npx tree-sitter generate

      - name: Commit generated parser files
        run: |
          git config --local user.email "$(git log --format='%ae' HEAD^!)"
          git config --local user.name "$(git log --format='%an' HEAD^!)"
          git add src
          git commit -m "Generate parser" || true
          git push
